Initial commit
This commit is contained in:
@@ -0,0 +1 @@
|
||||
FOR %%i IN (test_*.asm) DO ..\tools\sjasmplus -I.. -I../samples --lstlab --lst=%%~ni.lst %%i > %%~ni.log
|
||||
@@ -0,0 +1,51 @@
|
||||
di
|
||||
call init
|
||||
ld iy,#5c3a
|
||||
ld hl,10072
|
||||
exx
|
||||
ei
|
||||
.loop halt
|
||||
ld bc,1
|
||||
ld hl,500
|
||||
.delay
|
||||
sbc hl,bc
|
||||
jr nz,.delay
|
||||
ld a,4
|
||||
out (-2),a
|
||||
call play
|
||||
xor a
|
||||
out (-2),a
|
||||
ld a,#7f
|
||||
in a,(-2)
|
||||
rra
|
||||
jr c,.loop
|
||||
CALL mute
|
||||
.fail ld a,2
|
||||
out (-2),a
|
||||
di
|
||||
halt
|
||||
|
||||
define MTC_CYBERMOTION "CyberMotion.mtc"
|
||||
define MTC_DRUMTEST "drumtest.mtc"
|
||||
define MTC_MUG "mug.mtc"
|
||||
define MTC_MYSTICAL "mystical.mtc"
|
||||
define MTC_NEWOLD "newold.mtc"
|
||||
define MTC_SNEGURKA "Snegurka.mtc"
|
||||
define MTC_INDEEDREST "ineedrest.mtc"
|
||||
|
||||
define TFC_CYBERMOTION MTC_CYBERMOTION,0x76
|
||||
define TFC_DRUMTEST MTC_DRUMTEST,0xa90
|
||||
define TFC_MUG MTC_MUG,0x52
|
||||
define TFC_MYSTICAL MTC_MYSTICAL,0xcd4
|
||||
define TFC_NEWOLD MTC_NEWOLD,0x263a
|
||||
define TFC_SNEGURKA MTC_SNEGURKA,0x52
|
||||
|
||||
define PT3_DRUMTEST MTC_DRUMTEST,0x52
|
||||
define PT3_MYSTICAL MTC_MYSTICAL,0x52
|
||||
define PT3_NEWOLD MTC_NEWOLD,0x52
|
||||
define PT3_SNEGURKA MTC_SNEGURKA,0xaa4
|
||||
|
||||
define TS_INEEDREST "ineedrest.mtc",0x52
|
||||
|
||||
define PT2_PITON "PITON.pt2"
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
device zxspectrum128
|
||||
|
||||
org #6000
|
||||
begin
|
||||
include "test.asm"
|
||||
|
||||
org #8000
|
||||
player
|
||||
init=player
|
||||
play=player+5
|
||||
mute=player+8
|
||||
include "mtc.asm"
|
||||
|
||||
module
|
||||
;incbin MTC_CYBERMOTION
|
||||
;incbin MTC_DRUMTEST
|
||||
;incbin MTC_MUG
|
||||
;incbin MTC_MYSTICAL
|
||||
;incbin MTC_NEWOLD
|
||||
;incbin MTC_SNEGURKA
|
||||
incbin MTC_INDEEDREST
|
||||
|
||||
savesna "test_mtc.sna",begin
|
||||
savebin "../mtc_8000.bin",player,module-player
|
||||
@@ -0,0 +1,17 @@
|
||||
SjASMPlus Z80 Cross-Assembler v1.07 RC8 (build 06-11-2008)
|
||||
Pass 1 complete (0 errors)
|
||||
Pass 2 complete (0 errors)
|
||||
> MTC: loosed 0x0022 bytes
|
||||
> MTC: max streams 0x0006
|
||||
> PTS player size=0x0BD2
|
||||
> PT3 checker size: 0x0047
|
||||
> PT3 module size: 0x004C
|
||||
> PT2 checker size: 0x003B
|
||||
> PT2 module size: 0x0040
|
||||
> TS checker size: 0x003E
|
||||
> TS module size: 0x0043
|
||||
> TFC checker size: 0x0029
|
||||
> TFC module size: 0x0279
|
||||
> MTC module size: 0x1173
|
||||
Pass 3 complete
|
||||
Errors: 0, warnings: 0, compiled: 10954 lines
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
device zxspectrum128
|
||||
|
||||
org #6000
|
||||
begin
|
||||
include "test.asm"
|
||||
|
||||
org #c000
|
||||
player
|
||||
init=player
|
||||
play=player+5
|
||||
mute=player+8
|
||||
include "pt2.asm"
|
||||
|
||||
module
|
||||
incbin PT2_PITON
|
||||
|
||||
savesna "test_pt2.sna",begin
|
||||
savebin "../pt2_c000.bin",player,module-player
|
||||
@@ -0,0 +1,7 @@
|
||||
SjASMPlus Z80 Cross-Assembler v1.07 RC8 (build 06-11-2008)
|
||||
Pass 1 complete (0 errors)
|
||||
Pass 2 complete (0 errors)
|
||||
> PTS player size=0x0BBD
|
||||
> PT2 module size: 0x0BCD
|
||||
Pass 3 complete
|
||||
Errors: 0, warnings: 0, compiled: 3391 lines
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -0,0 +1,21 @@
|
||||
device zxspectrum128
|
||||
|
||||
org #6000
|
||||
begin
|
||||
include "test.asm"
|
||||
|
||||
org #c000
|
||||
player
|
||||
init=player
|
||||
play=player+5
|
||||
mute=player+8
|
||||
include "pt3.asm"
|
||||
|
||||
module
|
||||
;incbin PT3_DRUMTEST
|
||||
;incbin PT3_MYSTICAL
|
||||
;incbin PT3_NEWOLD
|
||||
incbin PT3_SNEGURKA
|
||||
|
||||
savesna "test_pt3.sna",begin
|
||||
savebin "../pt3_c000.bin",player,module-player
|
||||
@@ -0,0 +1,7 @@
|
||||
SjASMPlus Z80 Cross-Assembler v1.07 RC8 (build 06-11-2008)
|
||||
Pass 1 complete (0 errors)
|
||||
Pass 2 complete (0 errors)
|
||||
> PTS player size=0x0BBD
|
||||
> PT3 module size: 0x0BCD
|
||||
Pass 3 complete
|
||||
Errors: 0, warnings: 0, compiled: 3416 lines
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -0,0 +1,23 @@
|
||||
device zxspectrum128
|
||||
|
||||
org #6000
|
||||
begin
|
||||
include "test.asm"
|
||||
|
||||
org #c000
|
||||
player
|
||||
init=player
|
||||
play=player+5
|
||||
mute=player+8
|
||||
include "tfc.asm"
|
||||
|
||||
module
|
||||
incbin TFC_CYBERMOTION
|
||||
;incbin TFC_DRUMTEST
|
||||
;incbin TFC_MUG
|
||||
;incbin TFC_MYSTICAL
|
||||
;incbin TFC_NEWOLD
|
||||
;incbin TFC_SNEGURKA
|
||||
|
||||
savesna "test_tfc.sna",begin
|
||||
savebin "../tfc_c000.bin",player,module-player
|
||||
@@ -0,0 +1,6 @@
|
||||
SjASMPlus Z80 Cross-Assembler v1.07 RC8 (build 06-11-2008)
|
||||
Pass 1 complete (0 errors)
|
||||
Pass 2 complete (0 errors)
|
||||
> TFC module size: 0x0250
|
||||
Pass 3 complete
|
||||
Errors: 0, warnings: 0, compiled: 954 lines
|
||||
@@ -0,0 +1,679 @@
|
||||
001 0000 device zxspectrum128
|
||||
002 0000
|
||||
003 0000 org #6000
|
||||
004 6000 begin
|
||||
005 6000 include "test.asm"
|
||||
001+ 6000 F3 di
|
||||
002+ 6001 CD 00 C0 call init
|
||||
003+ 6004 FD 21 3A 5C ld iy,#5c3a
|
||||
004+ 6008 21 58 27 ld hl,10072
|
||||
005+ 600B D9 exx
|
||||
006+ 600C FB ei
|
||||
007+ 600D 76 .loop halt
|
||||
008+ 600E 01 01 00 ld bc,1
|
||||
009+ 6011 21 F4 01 ld hl,500
|
||||
010+ 6014 .delay
|
||||
011+ 6014 ED 42 sbc hl,bc
|
||||
012+ 6016 20 FC jr nz,.delay
|
||||
013+ 6018 3E 04 ld a,4
|
||||
014+ 601A D3 FE out (-2),a
|
||||
015+ 601C CD 05 C0 call play
|
||||
016+ 601F AF xor a
|
||||
017+ 6020 D3 FE out (-2),a
|
||||
018+ 6022 3E 7F ld a,#7f
|
||||
019+ 6024 DB FE in a,(-2)
|
||||
020+ 6026 1F rra
|
||||
021+ 6027 38 E4 jr c,.loop
|
||||
022+ 6029 CD 08 C0 CALL mute
|
||||
023+ 602C 3E 02 .fail ld a,2
|
||||
024+ 602E D3 FE out (-2),a
|
||||
025+ 6030 F3 di
|
||||
026+ 6031 76 halt
|
||||
027+ 6032
|
||||
028+ 6032 define MTC_CYBERMOTION "CyberMotion.mtc"
|
||||
029+ 6032 define MTC_DRUMTEST "drumtest.mtc"
|
||||
030+ 6032 define MTC_MUG "mug.mtc"
|
||||
031+ 6032 define MTC_MYSTICAL "mystical.mtc"
|
||||
032+ 6032 define MTC_NEWOLD "newold.mtc"
|
||||
033+ 6032 define MTC_SNEGURKA "Snegurka.mtc"
|
||||
034+ 6032 define MTC_INDEEDREST "ineedrest.mtc"
|
||||
035+ 6032
|
||||
036+ 6032 define TFC_CYBERMOTION MTC_CYBERMOTION,0x76
|
||||
037+ 6032 define TFC_DRUMTEST MTC_DRUMTEST,0xa90
|
||||
038+ 6032 define TFC_MUG MTC_MUG,0x52
|
||||
039+ 6032 define TFC_MYSTICAL MTC_MYSTICAL,0xcd4
|
||||
040+ 6032 define TFC_NEWOLD MTC_NEWOLD,0x263a
|
||||
041+ 6032 define TFC_SNEGURKA MTC_SNEGURKA,0x52
|
||||
042+ 6032
|
||||
043+ 6032 define PT3_DRUMTEST MTC_DRUMTEST,0x52
|
||||
044+ 6032 define PT3_MYSTICAL MTC_MYSTICAL,0x52
|
||||
045+ 6032 define PT3_NEWOLD MTC_NEWOLD,0x52
|
||||
046+ 6032 define PT3_SNEGURKA MTC_SNEGURKA,0xaa4
|
||||
047+ 6032
|
||||
048+ 6032 define TS_INEEDREST "ineedrest.mtc",0x52
|
||||
049+ 6032
|
||||
050+ 6032 define PT2_PITON "PITON.pt2"
|
||||
051+ 6032
|
||||
006 6032
|
||||
007 6032 org #c000
|
||||
008 C000 player
|
||||
009 C000 init=player
|
||||
010 C000 play=player+5
|
||||
011 C000 mute=player+8
|
||||
012 C000 include "tfc.asm"
|
||||
001+ C000 ifndef _tfc_asm_defined
|
||||
002+ C000 define _tfc_asm_defined
|
||||
003+ C000
|
||||
004+ C000 module TFC
|
||||
005+ C000
|
||||
006+ C000 ; Original version by (C) Alone Coder
|
||||
007+ C000 ; SjasmPlus adaptation, code cleanup and size optimization by (C) Vitamin/CAIG
|
||||
008+ C000
|
||||
009+ C000 ; Warning: no 60Hz modules support!
|
||||
010+ C000
|
||||
011+ C000 ;TODO begin&end ⮫쪮 ¢ ®¤®¬ ª «¥
|
||||
012+ C000 newtfm=1 ;0=revision A, 1=revision C
|
||||
013+ C000
|
||||
014+ C000 if newtfm == 1
|
||||
015+ C000 statuschip0=%11111000
|
||||
016+ C000 statuschip1=%11111001
|
||||
017+ C000 else
|
||||
018+ C000~ if newtfm == 2 ;US031DX
|
||||
019+ C000~ statuschip0=%11111110
|
||||
020+ C000~ statuschip1=%11111111
|
||||
021+ C000~ else ;newtfm=0
|
||||
022+ C000~ statuschip0=%11111100
|
||||
023+ C000~ statuschip1=%11111101
|
||||
024+ C000~ endif
|
||||
025+ C000 endif
|
||||
026+ C000
|
||||
027+ C000 struct Header
|
||||
028+ C000~ signature
|
||||
029+ C000~ ds 6
|
||||
030+ C000~ version ds 3
|
||||
031+ C000~ intfreq db 0
|
||||
032+ C000~ tfmptrs ds 12
|
||||
033+ C000~ ssgptrs ds 12
|
||||
034+ C000 ends
|
||||
035+ C000
|
||||
036+ C000 struct TFMData
|
||||
037+ C000~ addr dw 0
|
||||
038+ C000~ skip db 0
|
||||
039+ C000~ blkcnt db 0
|
||||
040+ C000~ blkretaddr
|
||||
041+ C000~ db 0
|
||||
042+ C000~ loopaddr
|
||||
043+ C000~ db 0
|
||||
044+ C000~ tfmlow db 0
|
||||
045+ C000~ tfmhigh db 0
|
||||
046+ C000 ends
|
||||
047+ C000
|
||||
048+ C000 macro WaitStatus
|
||||
049+ C000~ if newtfm != 2
|
||||
050+ C000~ inf
|
||||
051+ C000~ jp m,$-2
|
||||
052+ C000~ endif
|
||||
053+ C000 endm
|
||||
054+ C000
|
||||
055+ C000 macro FM.OutReg Reg
|
||||
056+ C000~ WaitStatus
|
||||
057+ C000~ out (c),Reg
|
||||
058+ C000 endm
|
||||
059+ C000
|
||||
060+ C000 macro FM.SelectReg Reg
|
||||
061+ C000~ ld b,d
|
||||
062+ C000~ FM.OutReg Reg
|
||||
063+ C000 endm
|
||||
064+ C000
|
||||
065+ C000 macro FM.WriteReg Reg
|
||||
066+ C000~ ld b,e
|
||||
067+ C000~ FM.OutReg Reg
|
||||
068+ C000 endm
|
||||
069+ C000
|
||||
070+ C000 Start
|
||||
071+ C000 21 50 C2 ld hl,End
|
||||
072+ C003 18 06 jr Init
|
||||
073+ C005 C3 BE C0 jp Play
|
||||
074+ C008 C3 47 C0 jp Mute
|
||||
075+ C00B
|
||||
076+ C00B ifdef HaveFormatCheck
|
||||
077+ C00B~ include "format.asm"
|
||||
078+ C00B~
|
||||
079+ C00B~ ;in HL - module addr
|
||||
080+ C00B~ ;out Z - is tfc
|
||||
081+ C00B~ ;out C - 60 Hz (valid only if Z)
|
||||
082+ C00B~ CheckFormat
|
||||
083+ C00B~ EqualTo "T"
|
||||
084+ C00B~ EqualTo "F"
|
||||
085+ C00B~ EqualTo "M"
|
||||
086+ C00B~ EqualTo "c"
|
||||
087+ C00B~ EqualTo "o"
|
||||
088+ C00B~ EqualTo "m"
|
||||
089+ C00B~ AnyBytes 3
|
||||
090+ C00B~ ld a,(hl)
|
||||
091+ C00B~ cp 50
|
||||
092+ C00B~ ret z
|
||||
093+ C00B~ cp 60
|
||||
094+ C00B~ ccf
|
||||
095+ C00B~ ret
|
||||
096+ C00B~
|
||||
097+ C00B~ display "TFC checker size: ",$-CheckFormat
|
||||
098+ C00B endif
|
||||
099+ C00B
|
||||
100+ C00B ;HL - module addr
|
||||
101+ C00B Init
|
||||
102+ C00B EB exd
|
||||
103+ C00C 21 0A 00 ld hl,Header.tfmptrs
|
||||
104+ C00F 19 add hl,de
|
||||
105+ C010 D9 exx
|
||||
106+ C011
|
||||
107+ C011 21 18 C2 ld hl,TFM.Init
|
||||
108+ C014 11 20 C2 ld de,TFM.A
|
||||
109+ C017 01 30 00 ld bc,6*TFMData
|
||||
110+ C01A ED B0 ldir
|
||||
111+ C01C
|
||||
112+ C01C 21 3B C0 ld hl,.tfminitab
|
||||
113+ C01F 01 FD 06 ld bc,128*(.tfminitab_end-.tfminitab)+#fd
|
||||
114+ C022 .tfmini0
|
||||
115+ C022 11 31 C0 ld de,.tfminiHL
|
||||
116+ C025 ED A0 ldi
|
||||
117+ C027 ED A0 ldi
|
||||
118+ C029 D9 exx
|
||||
119+ C02A 7E ld a,(hl)
|
||||
120+ C02B 23 inc hl
|
||||
121+ C02C E5 push hl
|
||||
122+ C02D 66 ld h,(hl)
|
||||
123+ C02E 6F ld l,a
|
||||
124+ C02F 19 add hl,de
|
||||
125+ C030 .tfminiHL=$+1
|
||||
126+ C030 22 00 00 ld (0),hl
|
||||
127+ C033 E1 pop hl
|
||||
128+ C034 23 inc hl
|
||||
129+ C035 D9 exx
|
||||
130+ C036 10 EA djnz .tfmini0
|
||||
131+ C038
|
||||
132+ C038 C3 47 C0 jp Mute
|
||||
133+ C03B
|
||||
134+ C03B .tfminitab
|
||||
135+ C03B 20 C2 DW TFM.A.addr
|
||||
136+ C03D 28 C2 DW TFM.B.addr
|
||||
137+ C03F 30 C2 DW TFM.C.addr
|
||||
138+ C041 38 C2 DW TFM.D.addr
|
||||
139+ C043 40 C2 DW TFM.E.addr
|
||||
140+ C045 48 C2 DW TFM.F.addr
|
||||
141+ C047 .tfminitab_end
|
||||
142+ C047
|
||||
143+ C047 Mute
|
||||
144+ C047 11 BF FF ld de,#ffbf
|
||||
145+ C04A 0E FD ld c,#fd
|
||||
146+ C04C CD B6 C0 call selChip0
|
||||
147+ C04F CD 55 C0 call .tfminiPP
|
||||
148+ C052 CD BA C0 call selChip1
|
||||
149+ C055 .tfminiPP
|
||||
150+ C055 ; 0 -> (00..0D)
|
||||
151+ C055 21 00 00 ld hl,#0000
|
||||
152+ C058 3E 0E ld a,#0e
|
||||
153+ C05A CD 9D C0 call .writeregsset
|
||||
154+ C05D
|
||||
155+ C05D ; 0 -> (30..3F)
|
||||
156+ C05D 26 30 ld h,#30
|
||||
157+ C05F 3E 40 ld a,#40
|
||||
158+ C061 CD 9D C0 call .writeregsset
|
||||
159+ C064
|
||||
160+ C064 ; 0 -> (50..B4)
|
||||
161+ C064 26 50 ld h,#50
|
||||
162+ C066 3E B5 ld a,#b5
|
||||
163+ C068 CD 9D C0 call .writeregsset
|
||||
164+ C06B
|
||||
165+ C06B ; 0F -> (80..8F) ;max speed to RR
|
||||
166+ C06B 21 0F 80 ld hl,#800f
|
||||
167+ C06E 3E 90 ld a,#90
|
||||
168+ C070 CD 9D C0 call .writeregsset
|
||||
169+ C073
|
||||
170+ C073 ; 0..2 -> 28, key off
|
||||
171+ C073 ; 2 -> 27 channel 3 mode
|
||||
172+ C073 21 00 28 ld hl,#2800
|
||||
173+ C076 CD A5 C0 call .writereg
|
||||
174+ C079 2C inc l
|
||||
175+ C07A CD A5 C0 call .writereg
|
||||
176+ C07D 2C inc l
|
||||
177+ C07E CD A5 C0 call .writereg
|
||||
178+ C081 25 dec h
|
||||
179+ C082 CD A5 C0 call .writereg
|
||||
180+ C085
|
||||
181+ C085 ; 7F -> (40..4F,2F,2D)
|
||||
182+ C085 21 7F 40 ld hl,#407f
|
||||
183+ C088 3E 50 ld a,#50
|
||||
184+ C08A CD 9D C0 call .writeregsset
|
||||
185+ C08D
|
||||
186+ C08D 26 2F ld h,#2f
|
||||
187+ C08F CD A5 C0 call .writereg
|
||||
188+ C092
|
||||
189+ C092 26 2D ld h,#2d
|
||||
190+ C094 CD A5 C0 call .writereg
|
||||
191+ C097
|
||||
192+ C097 3E FF ld a,#ff ;¢ëª«. FM
|
||||
193+ C099 .selRegA
|
||||
194+ C099 42 ld b,d
|
||||
195+ C09A ED 79 out (c),a
|
||||
196+ C09C C9 ret
|
||||
197+ C09D
|
||||
198+ C09D ;H=REG start
|
||||
199+ C09D ;L=VALUE
|
||||
200+ C09D ;A=REG end (not inclusive)
|
||||
201+ C09D .writeregsset
|
||||
202+ C09D CD A5 C0 call .writereg
|
||||
203+ C0A0 24 inc h
|
||||
204+ C0A1 BC cp h
|
||||
205+ C0A2 20 F9 jr nz,.writeregsset
|
||||
206+ C0A4 C9 ret
|
||||
207+ C0A5 ;H=REG
|
||||
208+ C0A5 ;L=VALUE
|
||||
209+ C0A5 .writereg
|
||||
210+ C0A5 FM.SelectReg h
|
||||
210+ C0A5 42 > ld b,d
|
||||
210+ C0A6 ED 70 > inf
|
||||
210+ C0A8 FA A6 C0 > jp m,$-2
|
||||
210+ C0AB ED 61 > out (c),Reg
|
||||
211+ C0AD FM.WriteReg l
|
||||
211+ C0AD 43 > ld b,e
|
||||
211+ C0AE ED 70 > inf
|
||||
211+ C0B0 FA AE C0 > jp m,$-2
|
||||
211+ C0B3 ED 69 > out (c),Reg
|
||||
212+ C0B5 C9 ret
|
||||
213+ C0B6
|
||||
214+ C0B6 selChip0
|
||||
215+ C0B6 3E F8 ld a,statuschip0
|
||||
216+ C0B8 18 DF jr Mute.selRegA
|
||||
217+ C0BA
|
||||
218+ C0BA selChip1
|
||||
219+ C0BA 3E F9 ld a,statuschip1
|
||||
220+ C0BC 18 DB jr Mute.selRegA
|
||||
221+ C0BE
|
||||
222+ C0BE Play
|
||||
223+ C0BE 11 BF FF ld de,#FFBF
|
||||
224+ C0C1 0E FD ld c,#FD
|
||||
225+ C0C3
|
||||
226+ C0C3 CD B6 C0 call selChip0
|
||||
227+ C0C6
|
||||
228+ C0C6 AF xor a
|
||||
229+ C0C7 08 exa
|
||||
230+ C0C8 DD 21 20 C2 ld ix,TFM.A
|
||||
231+ C0CC CD 03 C1 call PlayChannel
|
||||
232+ C0CF 3E 01 ld a,1
|
||||
233+ C0D1 08 exa
|
||||
234+ C0D2 DD 21 28 C2 ld ix,TFM.B
|
||||
235+ C0D6 CD 03 C1 call PlayChannel
|
||||
236+ C0D9 3E 02 ld a,2
|
||||
237+ C0DB 08 exa
|
||||
238+ C0DC DD 21 30 C2 ld ix,TFM.C
|
||||
239+ C0E0 CD 03 C1 call PlayChannel
|
||||
240+ C0E3
|
||||
241+ C0E3 CD BA C0 call selChip1
|
||||
242+ C0E6
|
||||
243+ C0E6 AF xor a
|
||||
244+ C0E7 08 exa
|
||||
245+ C0E8 DD 21 38 C2 ld ix,TFM.D
|
||||
246+ C0EC CD 03 C1 call PlayChannel
|
||||
247+ C0EF 3E 01 ld a,1
|
||||
248+ C0F1 08 exa
|
||||
249+ C0F2 DD 21 40 C2 ld ix,TFM.E
|
||||
250+ C0F6 CD 03 C1 call PlayChannel
|
||||
251+ C0F9 3E 02 ld a,2
|
||||
252+ C0FB 08 exa
|
||||
253+ C0FC DD 21 48 C2 ld ix,TFM.F
|
||||
254+ C100 C3 03 C1 jp PlayChannel
|
||||
255+ C103
|
||||
256+ C103 ;%11111111,-disp8 = ¤ ë¥ ª ¤à «¥¦ â ¯® ᬥ饨î -disp8
|
||||
257+ C103 ;%111ttttt = skip 32..2 frames
|
||||
258+ C103 ;%110ddddd = slide d-16
|
||||
259+ C103 ;%11010000,frames,-disp16 = repeat block (skips = 1 frame)
|
||||
260+ C103 ;%10111111,-disp16 = ¤ ë¥ ª ¤à «¥¦ â ¯® ᬥ饨î -disp16
|
||||
261+ C103 ;%10NNNNNf = keyoff,[freq,]0..30 regs, keyon
|
||||
262+ C103 ;%01111111 = end
|
||||
263+ C103 ;%01111110 = begin
|
||||
264+ C103 ;%01NNNNNf = keyoff,[freq,]0..31 regs
|
||||
265+ C103 ;%00NNNNNf = [freq,]0..30 regs
|
||||
266+ C103 bb=%01111110
|
||||
267+ C103 be=%01111111
|
||||
268+ C103 ;IX - data
|
||||
269+ C103 ;DE - hi ports #FFBF
|
||||
270+ C103 ;C - low port #FD
|
||||
271+ C103 ;A' - fm channel
|
||||
272+ C103 PlayChannel
|
||||
273+ C103 DD 7E 02 ld a,(ix+TFMData.skip)
|
||||
274+ C106 3C inc a
|
||||
275+ C107 C2 C6 C1 jp nz,.skiper
|
||||
276+ C10A DD 7E 03 ld a,(ix+TFMData.blkcnt)
|
||||
277+ C10D A7 and a
|
||||
278+ C10E 28 1D jr z,.noframe
|
||||
279+ C110 DD 35 03 dec (ix+TFMData.blkcnt)
|
||||
280+ C113 20 18 jr nz,.noframe
|
||||
281+ C115 DD 6E 04 ld l,(ix+TFMData.blkretaddr)
|
||||
282+ C118 DD 66 05 ld h,(ix+TFMData.blkretaddr+1)
|
||||
283+ C11B 18 16 jr .tfmframe
|
||||
284+ C11D .begin
|
||||
285+ C11D DD 75 05 ld (ix+TFMData.loopaddr),l
|
||||
286+ C120 DD 74 06 ld (ix+TFMData.loopaddr+1),h
|
||||
287+ C123 18 0E jr .tfmframe
|
||||
288+ C125 .end
|
||||
289+ C125 DD 6E 05 ld l,(ix+TFMData.loopaddr)
|
||||
290+ C128 DD 66 06 ld h,(ix+TFMData.loopaddr+1)
|
||||
291+ C12B 18 06 jr .tfmframe
|
||||
292+ C12D .noframe
|
||||
293+ C12D DD 6E 00 ld l,(ix+TFMData.addr)
|
||||
294+ C130 DD 66 01 ld h,(ix+TFMData.addr+1)
|
||||
295+ C133 .tfmframe
|
||||
296+ C133 7E ld a,(hl)
|
||||
297+ C134 23 inc hl
|
||||
298+ C135 FE 7E cp bb
|
||||
299+ C137 28 E4 jr z,.begin
|
||||
300+ C139 FE 7F cp be
|
||||
301+ C13B 28 E8 jr z,.end
|
||||
302+ C13D BB cp e ;#BF
|
||||
303+ C13E D2 B9 C1 jp NC,.HLskiper
|
||||
304+ C141 ;TestKeyOff
|
||||
305+ C141 F2 5A C1 jp P,.noffX
|
||||
306+ C144 F5 push af
|
||||
307+ C145 3E 28 ld a,#28
|
||||
308+ C147 FM.SelectReg a
|
||||
308+ C147 42 > ld b,d
|
||||
308+ C148 ED 70 > inf
|
||||
308+ C14A FA 48 C1 > jp m,$-2
|
||||
308+ C14D ED 79 > out (c),Reg
|
||||
309+ C14F 08 exa
|
||||
310+ C150 FM.WriteReg a ;FMChannel
|
||||
310+ C150 43 > ld b,e
|
||||
310+ C151 ED 70 > inf
|
||||
310+ C153 FA 51 C1 > jp m,$-2
|
||||
310+ C156 ED 79 > out (c),Reg
|
||||
311+ C158 08 exa
|
||||
312+ C159 F1 pop af
|
||||
313+ C15A .noffX
|
||||
314+ C15A B7 OR a
|
||||
315+ C15B F5 push af
|
||||
316+ C15C ;TestFreq
|
||||
317+ C15C 1F RRA
|
||||
318+ C15D 30 12 jr NC,.nofrqX
|
||||
319+ C15F
|
||||
320+ C15F 46 ld b,(hl)
|
||||
321+ C160 23 inc hl
|
||||
322+ C161 4E ld c,(hl)
|
||||
323+ C162 23 inc hl
|
||||
324+ C163 DD 70 07 ld (ix+TFMData.tfmhigh),b
|
||||
325+ C166 DD 71 06 ld (ix+TFMData.tfmlow),c
|
||||
326+ C169 C5 push bc
|
||||
327+ C16A E3 ex (sp),hl
|
||||
328+ C16B 0E FD ld c,#FD
|
||||
329+ C16D CD DB C1 call .outTone
|
||||
330+ C170 E1 pop hl
|
||||
331+ C171
|
||||
332+ C171 .nofrqX
|
||||
333+ C171 E6 1F and #1F
|
||||
334+ C173 C4 04 C2 call nz,.OutRegs
|
||||
335+ C176 CD B2 C1 call .storeaddr
|
||||
336+ C179 F1 pop af
|
||||
337+ C17A F0 ret P
|
||||
338+ C17B ;.KeyOn
|
||||
339+ C17B 3E 28 ld a,#28
|
||||
340+ C17D FM.SelectReg a
|
||||
340+ C17D 42 > ld b,d
|
||||
340+ C17E ED 70 > inf
|
||||
340+ C180 FA 7E C1 > jp m,$-2
|
||||
340+ C183 ED 79 > out (c),Reg
|
||||
341+ C185 08 exa
|
||||
342+ C186 C6 F0 add a,#F0
|
||||
343+ C188 FM.WriteReg a
|
||||
343+ C188 43 > ld b,e
|
||||
343+ C189 ED 70 > inf
|
||||
343+ C18B FA 89 C1 > jp m,$-2
|
||||
343+ C18E ED 79 > out (c),Reg
|
||||
344+ C190 D6 F0 sub #F0
|
||||
345+ C192 08 exa
|
||||
346+ C193 C9 ret
|
||||
347+ C194
|
||||
348+ C194 .block
|
||||
349+ C194 7E ld a,(hl) ;N frames
|
||||
350+ C195 ;1 now, N-1 later
|
||||
351+ C195 ;skip command is used as 1 frame
|
||||
352+ C195 23 inc hl
|
||||
353+ C196 DD 77 03 ld (ix+TFMData.blkcnt),a
|
||||
354+ C199 46 ld b,(hl)
|
||||
355+ C19A 23 inc hl
|
||||
356+ C19B 4E ld c,(hl) ;disp
|
||||
357+ C19C 23 inc hl
|
||||
358+ C19D DD 75 04 ld (ix+TFMData.blkretaddr),l
|
||||
359+ C1A0 DD 74 05 ld (ix+TFMData.blkretaddr+1),h
|
||||
360+ C1A3 .subframe
|
||||
361+ C1A3 09 add hl,bc
|
||||
362+ C1A4 0E FD ld c,#fd
|
||||
363+ C1A6 C3 33 C1 jp .tfmframe
|
||||
364+ C1A9
|
||||
365+ C1A9 .OLDfar
|
||||
366+ C1A9 46 ld b,(hl)
|
||||
367+ C1AA 23 inc hl
|
||||
368+ C1AB .OLDnear
|
||||
369+ C1AB 4E ld c,(hl)
|
||||
370+ C1AC 23 inc hl
|
||||
371+ C1AD E5 push hl
|
||||
372+ C1AE CD A3 C1 call .subframe
|
||||
373+ C1B1 E1 pop hl
|
||||
374+ C1B2 .storeaddr
|
||||
375+ C1B2 DD 75 00 ld (ix+TFMData.addr),l
|
||||
376+ C1B5 DD 74 01 ld (ix+TFMData.addr+1),h
|
||||
377+ C1B8 C9 ret
|
||||
378+ C1B9 .HLskiper
|
||||
379+ C1B9 28 EE jr z,.OLDfar
|
||||
380+ C1BB FE E0 cp %11100000
|
||||
381+ C1BD 38 0B jr c,.slide
|
||||
382+ C1BF 47 ld b,a
|
||||
383+ C1C0 BA cp d ;#FF
|
||||
384+ C1C1 28 E8 jr z,.OLDnear
|
||||
385+ C1C3 CD B2 C1 call .storeaddr
|
||||
386+ C1C6 DD 77 02 .skiper ld (ix+TFMData.skip),a
|
||||
387+ C1C9 C9 ret
|
||||
388+ C1CA .slide
|
||||
389+ C1CA ;a=-64..-33
|
||||
390+ C1CA C6 30 add a,48
|
||||
391+ C1CC ;a=-16..15
|
||||
392+ C1CC 28 C6 jr z,.block
|
||||
393+ C1CE DD 86 06 add a,(ix+TFMData.tfmlow)
|
||||
394+ C1D1 DD 77 06 ld (ix+TFMData.tfmlow),a
|
||||
395+ C1D4 CD B2 C1 call .storeaddr
|
||||
396+ C1D7 DD 66 07 ld h,(ix+TFMData.tfmhigh)
|
||||
397+ C1DA 6F ld l,a
|
||||
398+ C1DB .outTone
|
||||
399+ C1DB 08 exa
|
||||
400+ C1DC C6 A4 add a,#a4
|
||||
401+ C1DE FM.SelectReg a
|
||||
401+ C1DE 42 > ld b,d
|
||||
401+ C1DF ED 70 > inf
|
||||
401+ C1E1 FA DF C1 > jp m,$-2
|
||||
401+ C1E4 ED 79 > out (c),Reg
|
||||
402+ C1E6 FM.WriteReg h
|
||||
402+ C1E6 43 > ld b,e
|
||||
402+ C1E7 ED 70 > inf
|
||||
402+ C1E9 FA E7 C1 > jp m,$-2
|
||||
402+ C1EC ED 61 > out (c),Reg
|
||||
403+ C1EE D6 04 sub #04 ;#A0+channel
|
||||
404+ C1F0 FM.SelectReg a
|
||||
404+ C1F0 42 > ld b,d
|
||||
404+ C1F1 ED 70 > inf
|
||||
404+ C1F3 FA F1 C1 > jp m,$-2
|
||||
404+ C1F6 ED 79 > out (c),Reg
|
||||
405+ C1F8 FM.WriteReg l
|
||||
405+ C1F8 43 > ld b,e
|
||||
405+ C1F9 ED 70 > inf
|
||||
405+ C1FB FA F9 C1 > jp m,$-2
|
||||
405+ C1FE ED 69 > out (c),Reg
|
||||
406+ C200 D6 A0 sub #a0
|
||||
407+ C202 08 exa
|
||||
408+ C203 C9 ret
|
||||
409+ C204
|
||||
410+ C204 42 .OutRegs ld b,d ;%11111xxx
|
||||
411+ C205 WaitStatus
|
||||
411+ C205 ED 70 > inf
|
||||
411+ C207 FA 05 C2 > jp m,$-2
|
||||
412+ C20A ED A3 outi ;reg
|
||||
413+ C20C WaitStatus
|
||||
413+ C20C ED 70 > inf
|
||||
413+ C20E FA 0C C2 > jp m,$-2
|
||||
414+ C211 43 ld b,e ;#BF
|
||||
415+ C212 ED A3 outi ;value
|
||||
416+ C214 3D dec a
|
||||
417+ C215 20 ED jr nz,.OutRegs ;¢ turbo jr=jp
|
||||
418+ C217 C9 ret
|
||||
419+ C218
|
||||
420+ C218 TFM.Init TFMData 0,-1,0
|
||||
420+ C218 0000FF0000000000
|
||||
421+ C220 TFM.A TFMData
|
||||
421+ C220 0000000000000000
|
||||
422+ C228 TFM.B TFMData
|
||||
422+ C228 0000000000000000
|
||||
423+ C230 TFM.C TFMData
|
||||
423+ C230 0000000000000000
|
||||
424+ C238 TFM.D TFMData
|
||||
424+ C238 0000000000000000
|
||||
425+ C240 TFM.E TFMData
|
||||
425+ C240 0000000000000000
|
||||
426+ C248 TFM.F TFMData
|
||||
426+ C248 0000000000000000
|
||||
427+ C250
|
||||
428+ C250 endmod
|
||||
429+ C250 TFC.End
|
||||
430+ C250
|
||||
431+ C250 display "TFC module size: ",TFC.End-TFC.Start
|
||||
432+ C250
|
||||
433+ C250 endif
|
||||
434+ C250
|
||||
013 C250
|
||||
014 C250 module
|
||||
015 C250 incbin TFC_CYBERMOTION
|
||||
016 F79A ;incbin TFC_DRUMTEST
|
||||
017 F79A ;incbin TFC_MUG
|
||||
018 F79A ;incbin TFC_MYSTICAL
|
||||
019 F79A ;incbin TFC_NEWOLD
|
||||
020 F79A ;incbin TFC_SNEGURKA
|
||||
021 F79A
|
||||
022 F79A savesna "test_tfc.sna",begin
|
||||
023 F79A savebin "../tfc_c000.bin",player,module-player
|
||||
024 F79A
|
||||
|
||||
Value Label
|
||||
------ - -----------------------------------------------------------
|
||||
0x6000 begin
|
||||
0xC000 init
|
||||
0x600D begin.loop
|
||||
0x6014 begin.delay
|
||||
0xC005 play
|
||||
0xC008 mute
|
||||
0x602C X begin.fail
|
||||
0xC000 player
|
||||
0x0001 TFC.newtfm
|
||||
0x00F8 TFC.statuschip0
|
||||
0x00F9 TFC.statuschip1
|
||||
0x0022 X TFC.Header
|
||||
0x0000 X TFC.Header.signature
|
||||
0x0006 X TFC.Header.version
|
||||
0x0009 X TFC.Header.intfreq
|
||||
0x000A TFC.Header.tfmptrs
|
||||
0x0016 X TFC.Header.ssgptrs
|
||||
0x0008 TFC.TFMData
|
||||
0x0000 TFC.TFMData.addr
|
||||
0x0002 TFC.TFMData.skip
|
||||
0x0003 TFC.TFMData.blkcnt
|
||||
0x0004 TFC.TFMData.blkretaddr
|
||||
0x0005 TFC.TFMData.loopaddr
|
||||
0x0006 TFC.TFMData.tfmlow
|
||||
0x0007 TFC.TFMData.tfmhigh
|
||||
0xC000 TFC.Start
|
||||
0xC250 TFC.End
|
||||
0xC00B TFC.Init
|
||||
0xC0BE TFC.Play
|
||||
0xC047 TFC.Mute
|
||||
0xC218 TFC.TFM.Init
|
||||
0xC220 TFC.TFM.A
|
||||
0xC03B TFC.Init.tfminitab
|
||||
0xC047 TFC.Init.tfminitab_end
|
||||
0xC022 TFC.Init.tfmini0
|
||||
0xC031 TFC.Init.tfminiHL
|
||||
0xC220 TFC.TFM.A.addr
|
||||
0xC228 TFC.TFM.B.addr
|
||||
0xC230 TFC.TFM.C.addr
|
||||
0xC238 TFC.TFM.D.addr
|
||||
0xC240 TFC.TFM.E.addr
|
||||
0xC248 TFC.TFM.F.addr
|
||||
0xC0B6 TFC.selChip0
|
||||
0xC055 TFC.Mute.tfminiPP
|
||||
0xC0BA TFC.selChip1
|
||||
0xC09D TFC.Mute.writeregsset
|
||||
0xC0A5 TFC.Mute.writereg
|
||||
0xC099 TFC.Mute.selRegA
|
||||
0xC103 TFC.PlayChannel
|
||||
0xC228 TFC.TFM.B
|
||||
0xC230 TFC.TFM.C
|
||||
0xC238 TFC.TFM.D
|
||||
0xC240 TFC.TFM.E
|
||||
0xC248 TFC.TFM.F
|
||||
0x007E TFC.bb
|
||||
0x007F TFC.be
|
||||
0xC1C6 TFC.PlayChannel.skiper
|
||||
0xC12D TFC.PlayChannel.noframe
|
||||
0xC133 TFC.PlayChannel.tfmframe
|
||||
0xC11D TFC.PlayChannel.begin
|
||||
0xC125 TFC.PlayChannel.end
|
||||
0xC1B9 TFC.PlayChannel.HLskiper
|
||||
0xC15A TFC.PlayChannel.noffX
|
||||
0xC171 TFC.PlayChannel.nofrqX
|
||||
0xC1DB TFC.PlayChannel.outTone
|
||||
0xC204 TFC.PlayChannel.OutRegs
|
||||
0xC1B2 TFC.PlayChannel.storeaddr
|
||||
0xC194 TFC.PlayChannel.block
|
||||
0xC1A3 TFC.PlayChannel.subframe
|
||||
0xC1A9 TFC.PlayChannel.OLDfar
|
||||
0xC1AB TFC.PlayChannel.OLDnear
|
||||
0xC1CA TFC.PlayChannel.slide
|
||||
0xC218 X TFC.TFM.Init.addr
|
||||
0xC21A X TFC.TFM.Init.skip
|
||||
0xC21B X TFC.TFM.Init.blkcnt
|
||||
0xC21C X TFC.TFM.Init.blkretaddr
|
||||
0xC21D X TFC.TFM.Init.loopaddr
|
||||
0xC21E X TFC.TFM.Init.tfmlow
|
||||
0xC21F X TFC.TFM.Init.tfmhigh
|
||||
0xC222 X TFC.TFM.A.skip
|
||||
0xC223 X TFC.TFM.A.blkcnt
|
||||
0xC224 X TFC.TFM.A.blkretaddr
|
||||
0xC225 X TFC.TFM.A.loopaddr
|
||||
0xC226 X TFC.TFM.A.tfmlow
|
||||
0xC227 X TFC.TFM.A.tfmhigh
|
||||
0xC22A X TFC.TFM.B.skip
|
||||
0xC22B X TFC.TFM.B.blkcnt
|
||||
0xC22C X TFC.TFM.B.blkretaddr
|
||||
0xC22D X TFC.TFM.B.loopaddr
|
||||
0xC22E X TFC.TFM.B.tfmlow
|
||||
0xC22F X TFC.TFM.B.tfmhigh
|
||||
0xC232 X TFC.TFM.C.skip
|
||||
0xC233 X TFC.TFM.C.blkcnt
|
||||
0xC234 X TFC.TFM.C.blkretaddr
|
||||
0xC235 X TFC.TFM.C.loopaddr
|
||||
0xC236 X TFC.TFM.C.tfmlow
|
||||
0xC237 X TFC.TFM.C.tfmhigh
|
||||
0xC23A X TFC.TFM.D.skip
|
||||
0xC23B X TFC.TFM.D.blkcnt
|
||||
0xC23C X TFC.TFM.D.blkretaddr
|
||||
0xC23D X TFC.TFM.D.loopaddr
|
||||
0xC23E X TFC.TFM.D.tfmlow
|
||||
0xC23F X TFC.TFM.D.tfmhigh
|
||||
0xC242 X TFC.TFM.E.skip
|
||||
0xC243 X TFC.TFM.E.blkcnt
|
||||
0xC244 X TFC.TFM.E.blkretaddr
|
||||
0xC245 X TFC.TFM.E.loopaddr
|
||||
0xC246 X TFC.TFM.E.tfmlow
|
||||
0xC247 X TFC.TFM.E.tfmhigh
|
||||
0xC24A X TFC.TFM.F.skip
|
||||
0xC24B X TFC.TFM.F.blkcnt
|
||||
0xC24C X TFC.TFM.F.blkretaddr
|
||||
0xC24D X TFC.TFM.F.loopaddr
|
||||
0xC24E X TFC.TFM.F.tfmlow
|
||||
0xC24F X TFC.TFM.F.tfmhigh
|
||||
0xC250 module
|
||||
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
device zxspectrum128
|
||||
|
||||
org #6000
|
||||
begin
|
||||
include "test.asm"
|
||||
|
||||
org #c000
|
||||
player
|
||||
init=player
|
||||
play=player+5
|
||||
mute=player+8
|
||||
include "ts.asm"
|
||||
|
||||
module
|
||||
incbin TS_INEEDREST
|
||||
|
||||
savesna "test_ts.sna",begin
|
||||
savebin "../ts_c000.bin",player,module-player
|
||||
@@ -0,0 +1,7 @@
|
||||
SjASMPlus Z80 Cross-Assembler v1.07 RC8 (build 06-11-2008)
|
||||
Pass 1 complete (0 errors)
|
||||
Pass 2 complete (0 errors)
|
||||
> PTS player size=0x0BBD
|
||||
> TS module size: 0x0C0D
|
||||
Pass 3 complete
|
||||
Errors: 0, warnings: 0, compiled: 3471 lines
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -0,0 +1,35 @@
|
||||
device zxspectrum128
|
||||
|
||||
org #6000
|
||||
begin
|
||||
include "test.asm"
|
||||
|
||||
org #8000
|
||||
player
|
||||
init=player
|
||||
play=player+5
|
||||
mute=player+8
|
||||
include "uni.asm"
|
||||
|
||||
module
|
||||
;incbin MTC_CYBERMOTION
|
||||
;incbin MTC_DRUMTEST
|
||||
;incbin MTC_MUG
|
||||
incbin MTC_MYSTICAL
|
||||
;incbin MTC_NEWOLD
|
||||
;incbin MTC_SNEGURKA
|
||||
;incbin TFC_CYBERMOTION
|
||||
;incbin TFC_DRUMTEST
|
||||
;incbin TFC_MUG
|
||||
;incbin TFC_MYSTICAL
|
||||
;incbin TFC_NEWOLD
|
||||
;incbin TFC_SNEGURKA
|
||||
;incbin PT3_DRUMTEST
|
||||
;incbin PT3_MYSTICAL
|
||||
;incbin PT3_NEWOLD
|
||||
;incbin PT3_SNEGURKA
|
||||
;incbin TS_INEEDREST
|
||||
;incbin PT2_PITON
|
||||
|
||||
savesna "test_uni.sna",begin
|
||||
savebin "../uni_8000.bin",player,module-player
|
||||
@@ -0,0 +1,19 @@
|
||||
SjASMPlus Z80 Cross-Assembler v1.07 RC8 (build 06-11-2008)
|
||||
Pass 1 complete (0 errors)
|
||||
Pass 2 complete (0 errors)
|
||||
> MTC checker size: 0x001F
|
||||
> MTC: loosed 0x0091 bytes
|
||||
> MTC: max streams 0x0010
|
||||
> PTS player size=0x0BD2
|
||||
> PT3 checker size: 0x0047
|
||||
> PT3 module size: 0x004C
|
||||
> PT2 checker size: 0x003B
|
||||
> PT2 module size: 0x0040
|
||||
> TS checker size: 0x003E
|
||||
> TS module size: 0x0043
|
||||
> TFC checker size: 0x0029
|
||||
> TFC module size: 0x0279
|
||||
> MTC module size: 0x11F6
|
||||
> UNI module size: 0x1268
|
||||
Pass 3 complete
|
||||
Errors: 0, warnings: 0, compiled: 11204 lines
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Reference in New Issue
Block a user