Files
2026-08-31 21:04:48 +03:00

2145 lines
78 KiB
Plaintext

0001 0000 device zxspectrum128
0002 0000
0003 0000 org #6000
0004 6000 begin
0005 6000 include "test.asm"
0001+ 6000 F3 di
0002+ 6001 CD 00 C0 call init
0003+ 6004 FD 21 3A 5C ld iy,#5c3a
0004+ 6008 21 58 27 ld hl,10072
0005+ 600B D9 exx
0006+ 600C FB ei
0007+ 600D 76 .loop halt
0008+ 600E 01 01 00 ld bc,1
0009+ 6011 21 F4 01 ld hl,500
0010+ 6014 .delay
0011+ 6014 ED 42 sbc hl,bc
0012+ 6016 20 FC jr nz,.delay
0013+ 6018 3E 04 ld a,4
0014+ 601A D3 FE out (-2),a
0015+ 601C CD 05 C0 call play
0016+ 601F AF xor a
0017+ 6020 D3 FE out (-2),a
0018+ 6022 3E 7F ld a,#7f
0019+ 6024 DB FE in a,(-2)
0020+ 6026 1F rra
0021+ 6027 38 E4 jr c,.loop
0022+ 6029 CD 08 C0 CALL mute
0023+ 602C 3E 02 .fail ld a,2
0024+ 602E D3 FE out (-2),a
0025+ 6030 F3 di
0026+ 6031 76 halt
0027+ 6032
0028+ 6032 define MTC_CYBERMOTION "CyberMotion.mtc"
0029+ 6032 define MTC_DRUMTEST "drumtest.mtc"
0030+ 6032 define MTC_MUG "mug.mtc"
0031+ 6032 define MTC_MYSTICAL "mystical.mtc"
0032+ 6032 define MTC_NEWOLD "newold.mtc"
0033+ 6032 define MTC_SNEGURKA "Snegurka.mtc"
0034+ 6032 define MTC_INDEEDREST "ineedrest.mtc"
0035+ 6032
0036+ 6032 define TFC_CYBERMOTION MTC_CYBERMOTION,0x76
0037+ 6032 define TFC_DRUMTEST MTC_DRUMTEST,0xa90
0038+ 6032 define TFC_MUG MTC_MUG,0x52
0039+ 6032 define TFC_MYSTICAL MTC_MYSTICAL,0xcd4
0040+ 6032 define TFC_NEWOLD MTC_NEWOLD,0x263a
0041+ 6032 define TFC_SNEGURKA MTC_SNEGURKA,0x52
0042+ 6032
0043+ 6032 define PT3_DRUMTEST MTC_DRUMTEST,0x52
0044+ 6032 define PT3_MYSTICAL MTC_MYSTICAL,0x52
0045+ 6032 define PT3_NEWOLD MTC_NEWOLD,0x52
0046+ 6032 define PT3_SNEGURKA MTC_SNEGURKA,0xaa4
0047+ 6032
0048+ 6032 define TS_INEEDREST "ineedrest.mtc",0x52
0049+ 6032
0050+ 6032 define PT2_PITON "PITON.pt2"
0051+ 6032
0006 6032
0007 6032 org #c000
0008 C000 player
0009 C000 init=player
0010 C000 play=player+5
0011 C000 mute=player+8
0012 C000 include "ts.asm"
0001+ C000 ifndef _ts_asm_defined
0002+ C000 define _ts_asm_defined
0003+ C000
0004+ C000 module TS
0005+ C000
0006+ C000 struct Footer
0007+ C000~ Sign1 DS 4
0008+ C000~ Size1 DW 0
0009+ C000~ Sign2 DS 4
0010+ C000~ Size2 DW 0
0011+ C000~ Sign3 DS 4
0012+ C000 ENDS
0013+ C000
0014+ C000 Start
0015+ C000 ifndef NoPrologue
0016+ C000 21 0D CC ld hl,End
0017+ C003 18 06 jr .init
0018+ C005 C3 7F C8 jp PTS.PLAY
0019+ C008 C3 51 C0 jp PTS.MUTE
0020+ C00B CD 13 C0 .init call CheckFormat
0021+ C00E ;ignore invalids
0022+ C00E endif
0023+ C00E
0024+ C00E 3E 10 Init ld a,PTS.SETUP.TS02
0025+ C010 C3 63 C0 jp PTS.INIT
0026+ C013
0027+ C013 ;in HL - module addr
0028+ C013 ;out Z - is ts
0029+ C013 ;out HL/DE modules offsets (valid only if Z)
0030+ C013 CheckFormat
0031+ C014 54 5D ld d,h,e,l
0032+ C015 14 inc d ;skip 256 bytes
0033+ C016 .findfooter
0034+ C017 62 6B ld h,d,l,e
0035+ C018 CD 24 C0 call CheckFooter
0036+ C01B C8 ret z
0037+ C01C 1C inc e
0038+ C01D 20 F7 jr nz,.findfooter
0039+ C01F 14 inc d
0040+ C020 20 F4 jr nz,.findfooter
0041+ C022 1C inc e ;reset Z
0042+ C023 ;hl/de are invalid!!!
0043+ C023 C9 ret
0044+ C024
0045+ C024 ;in HL - module addr
0046+ C024 ;in BC - module size
0047+ C024 ;out Z - is ts
0048+ C024 ;out HL/DE - modules offsets (valid only if Z)
0049+ C024 ifdef HaveFormatCheck
0050+ C024~ CheckFormatKnownSize
0051+ C024~ add hl,bc
0052+ C024 endif
0053+ C024 CheckFooter
0054+ C024 2B dec hl
0055+ C025 7E ld a,(hl)
0056+ C026 FE 53 cp "S"
0057+ C028 C0 ret nz
0058+ C029 2B dec hl
0059+ C02A 7E ld a,(hl)
0060+ C02B FE 54 cp "T"
0061+ C02D C0 ret nz
0062+ C02E 2B dec hl
0063+ C02F 7E ld a,(hl)
0064+ C030 FE 32 cp "2"
0065+ C032 C0 ret nz
0066+ C033 2B dec hl
0067+ C034 7E ld a,(hl)
0068+ C035 FE 30 cp "0"
0069+ C037 C0 ret nz
0070+ C038 2B dec hl
0071+ C039 56 ld d,(hl)
0072+ C03A 2B dec hl
0073+ C03B 5E ld e,(hl) ;Size2
0074+ C03F 2B 2B 2B 2B dec hl,hl,hl,hl;skip Sign2
0075+ C040 2B dec hl
0076+ C041 46 ld b,(hl)
0077+ C042 2B dec hl
0078+ C043 4E ld c,(hl) ;Size1
0079+ C047 2B 2B 2B 2B dec hl,hl,hl,hl;skip Sign1
0080+ C048
0081+ C048 ED 52 sbc hl,de
0082+ C04A 54 ld d,h
0083+ C04B 5D ld e,l
0084+ C04C ED 42 sbc hl,bc
0085+ C04E AF xor a
0086+ C04F C9 ret
0087+ C050
0088+ C050 ifdef HaveFormatCheck
0089+ C050~ display "TS checker size: ",$-CheckFormat
0090+ C050 endif
0091+ C050
0092+ C050 endmod
0093+ C050
0094+ C050 include "PTSPlay.asm"
0001++ C050 ifndef _pts_asm_defined
0002++ C050 define _pts_asm_defined
0003++ C050
0004++ C050 MODULE PTS
0005++ C050
0006++ C050 ;Universal PT2'n'PT3 Turbo Sound player for ZX Spectrum
0007++ C050 ;(c)2004-2007 S.V.Bulba <vorobey@mail.khstu.ru>
0008++ C050 ;Specially for AlCo
0009++ C050 ;http://bulba.untergrund.net/ (http://bulba.at.kz/)
0010++ C050
0011++ C050 ;Release number
0012++ C050 Release EQU "0"
0013++ C050
0014++ C050 ;Conditional assembly
0015++ C050 ;1) Current position counters at (Vars1+0) and (Vars2+0)
0016++ C050 CurPosCounter=0
0017++ C050 ;2) Allow channels allocation bits at (SETUP)
0018++ C050 ACBBAC=0
0019++ C050 ;3) Allow loop checking and disabling
0020++ C050 LoopChecker=0
0021++ C050 ;4) Insert official identificator
0022++ C050 Id=0
0023++ C050 ;5) Set IY for correct return to ZX Basic
0024++ C050 Basic=0
0025++ C050
0026++ C050 ;Features
0027++ C050 ;--------
0028++ C050 ;-Can be compiled at any address (i.e. no need rounding ORG
0029++ C050 ; address).
0030++ C050 ;-Variables (VARS) can be located at any address (not only after
0031++ C050 ; code block).
0032++ C050 ;-INIT subprogram checks PT3-module version and rightly
0033++ C050 ; generates both note and volume tables outside of code block
0034++ C050 ; (in VARS).
0035++ C050 ;-Two portamento (spc. command 3xxx) algorithms (depending of
0036++ C050 ; PT3 module version).
0037++ C050 ;-New 1.XX and 2.XX special command behaviour (only for PT v3.7
0038++ C050 ; and higher).
0039++ C050 ;-Any Tempo value are accepted (including Tempo=1 and Tempo=2).
0040++ C050 ;-TS modes: 2xPT3, 2xPT2 and PT v3.7 TS standard.
0041++ C050 ;-Fully compatible with Ay_Emul PT3 and PT2 players codes.
0042++ C050 ;-See also notes at the end of this source code.
0043++ C050
0044++ C050 ;Limitations
0045++ C050 ;-----------
0046++ C050 ;-Can run in RAM only (self-modified code is used).
0047++ C050 ;-PT2 position list must be end by #FF marker only.
0048++ C050
0049++ C050 ;Warning!!! PLAY subprogram can crash if no module are loaded
0050++ C050 ;into RAM or INIT subprogram was not called before.
0051++ C050
0052++ C050 ;Call MUTE or INIT one more time to mute sound after stopping
0053++ C050 ;playing
0054++ C050
0055++ C050 TonA EQU 0
0056++ C050 TonB EQU 2
0057++ C050 TonC EQU 4
0058++ C050 Noise EQU 6
0059++ C050 Mixer EQU 7
0060++ C050 AmplA EQU 8
0061++ C050 AmplB EQU 9
0062++ C050 AmplC EQU 10
0063++ C050 Env EQU 11
0064++ C050 EnvTp EQU 13
0065++ C050
0066++ C050 START
0067++ C050
0068++ C050 SETUP.NOLOOP EQU 1
0069++ C050 SETUP.PT2 EQU 2
0070++ C050 SETUP.ACB EQU 4
0071++ C050 SETUP.BAC EQU 8
0072++ C050 SETUP.TS02 EQU 16
0073++ C050 SETUP.TSPT3 EQU 32
0074++ C050
0075++ C050 00 SETUP DB 0 ;set bit0, if you want to play without looping
0076++ C051 ;(optional);
0077++ C051 ;set bit1 for PT2 and reset for PT3 before
0078++ C051 ;calling INIT;
0079++ C051 ;bits2-3: %00-ABC, %01-ACB, %10-BAC (optional);
0080++ C051 ;bits4-5: %00-no TS, %01-2 modules TS, %10-
0081++ C051 ;autodetect PT3 TS-format by AlCo (PT 3.7+);
0082++ C051 ;Remark: old PT3 TS-format by AlCo (PT 3.6) is not
0083++ C051 ;documented and must be converted to new standard.
0084++ C051 ;bit6 is set each time, when loop point of 2nd TS
0085++ C051 ;module is passed (optional).
0086++ C051 ;bit7 is set each time, when loop point of 1st TS
0087++ C051 ;or of single module is passed (optional).
0088++ C051
0089++ C051 ;Identifier
0090++ C051 IF Id
0091++ C051~ DB "=UniPT2/PT3/TS-Player r.",Release,"="
0092++ C051 ENDIF
0093++ C051
0094++ C051 IF LoopChecker
0095++ C051~ CHECKLP LD HL,SETUP
0096++ C051~ BIT 0,(IY-100+VRS.ModNum)
0097++ C051~ JR Z,CHL1
0098++ C051~ SET 6,(HL)
0099++ C051~ JR CHL2
0100++ C051~ CHL1 SET 7,(HL)
0101++ C051~ CHL2 BIT 0,(HL)
0102++ C051~ RET Z
0103++ C051~ POP HL
0104++ C051~ INC (IY-100+VRS.DelyCnt)
0105++ C051~ INC (IY-100+VRS.ChanA+CHP.NtSkCn)
0106++ C051~ XOR A
0107++ C051~ LD (IY-100+VRS.AYREGS+AmplA),A
0108++ C051~ LD (IY-100+VRS.AYREGS+AmplB),A
0109++ C051~ LD (IY-100+VRS.AYREGS+AmplC),A
0110++ C051~ RET
0111++ C051 ENDIF
0112++ C051
0113++ C051 AF MUTE XOR A
0114++ C052 67 LD H,A
0115++ C053 6F LD L,A
0116++ C054 32 D0 C9 LD (VARS1+VRS.AYREGS+AmplA),A
0117++ C057 22 D1 C9 LD (VARS1+VRS.AYREGS+AmplB),HL
0118++ C05A 32 57 CA LD (VARS2+VRS.AYREGS+AmplA),A
0119++ C05D 22 58 CA LD (VARS2+VRS.AYREGS+AmplB),HL
0120++ C060 C3 93 C8 JP ROUT
0121++ C063
0122++ C063 INIT
0123++ C063 ;HL - AddressOfModule
0124++ C063 ;DE - AddresOf2ndModule
0125++ C063 ;A - mode
0126++ C063 D5 PUSH DE
0127++ C064 E5 PUSH HL
0128++ C065 21 4E C9 LD HL,VARS
0129++ C068 36 00 LD (HL),0
0130++ C06A 11 4F C9 LD DE,VARS+1
0131++ C06D 01 0E 01 LD BC,VAR0END-VARS-1
0132++ C070 ED B0 LDIR
0133++ C072 23 INC HL
0134++ C073 22 B1 C9 LD (VARS1+VRS.AdInPtA),HL ;ptr to zero
0135++ C076 22 38 CA LD (VARS2+VRS.AdInPtA),HL
0136++ C079
0137++ C079 E1 POP HL
0138++ C07A FD 21 B3 C9 LD IY,VARS1+100
0139++ C07E 32 50 C0 LD (SETUP),A
0140++ C081 E6 02 AND SETUP.PT2
0141++ C083 C2 0C C1 JP NZ,I_PT2
0142++ C086
0143++ C086 CD 55 C2 CALL INITPT3
0144++ C089 21 18 1F LD HL,(e_-SamCnv-2)*256+#18
0145++ C08C 22 28 C6 LD (SamCnv),HL
0146++ C08F 3E BA LD A,#BA
0147++ C091 32 F3 C5 LD (OrnCP),A
0148++ C094 32 1F C6 LD (SamCP),A
0149++ C097 3E 7B LD A,#7B
0150++ C099 32 F6 C5 LD (OrnLD),A
0151++ C09C 32 22 C6 LD (SamLD),A
0152++ C09F 3E 87 LD A,#87
0153++ C0A1 32 19 C6 LD (SamClc2),A
0154++ C0A4 E1 POP HL
0155++ C0A5 ;Use version and ton table of 1st module
0156++ C0A5 DD 7E A9 LD A,(IX+13-100) ;EXTRACT VERSION NUMBER
0157++ C0A8 D6 30 SUB #30
0158++ C0AA 38 04 JR C,L20
0159++ C0AC FE 0A CP 10
0160++ C0AE 38 02 JR C,L21
0161++ C0B0 3E 06 L20 LD A,6
0162++ C0B2 32 C6 C4 L21 LD (Version),A
0163++ C0B5 F5 PUSH AF ;VolTable version
0164++ C0B6 FE 04 CP 4
0165++ C0B8 DD 7E FF LD A,(IX+99-100) ;TONE TABLE NUMBER
0166++ C0BB 17 RLA
0167++ C0BC E6 07 AND 7
0168++ C0BE F5 PUSH AF ;NoteTable number
0169++ C0BF
0170++ C0BF FD 21 3A CA LD IY,VARS2+100
0171++ C0C3 3A 50 C0 LD A,(SETUP)
0172++ C0C6 E6 30 AND SETUP.TS02|SETUP.TSPT3
0173++ C0C8 28 37 JR Z,NOTS
0174++ C0CA FE 10 CP SETUP.TS02
0175++ C0CC 28 27 JR Z,TwoPT3s
0176++ C0CE 3A C6 C4 LD A,(Version)
0177++ C0D1 FE 07 CP 7
0178++ C0D3 38 2C JR C,NOTS
0179++ C0D5 DD 7E FE LD A,(IX+98-100) ;ALCO TS MARKER
0180++ C0D8 FE 20 CP #20
0181++ C0DA 28 25 JR Z,NOTS
0182++ C0DC 21 4F C9 LD HL,VARS1
0183++ C0DF 11 D6 C9 LD DE,VARS2
0184++ C0E2 01 87 00 LD BC,VRS
0185++ C0E5 ED B0 LDIR
0186++ C0E7 FD CB 9E CE SET 1,(IY-100+VRS.ModNum)
0187++ C0EB 4F LD C,A
0188++ C0EC 87 ADD A,A
0189++ C0ED 81 ADD A,C
0190++ C0EE D6 02 SUB 2
0191++ C0F0 32 8A C7 LD (TSSub),A
0192++ C0F3 18 03 JR AlCoTS_
0193++ C0F5 CD 55 C2 TwoPT3s CALL INITPT3
0194++ C0F8 3E 01 AlCoTS_ LD A,1
0195++ C0FA 32 4E C9 LD (is_ts),A
0196++ C0FD FD CB 9E C6 SET 0,(IY-100+VRS.ModNum)
0197++ C101
0198++ C101 01 12 C4 NOTS LD BC,PT3PD
0199++ C104 21 00 00 LD HL,0
0200++ C107 11 16 C9 LD DE,PT3EMPTYORN
0201++ C10A 18 48 JR INITCOMMON
0202++ C10C
0203++ C10C CD 8D C2 I_PT2 CALL INITPT2
0204++ C10F 21 CB 51 LD HL,#51CB
0205++ C112 22 28 C6 LD (SamCnv),HL
0206++ C115 3E BB LD A,#BB
0207++ C117 32 F3 C5 LD (OrnCP),A
0208++ C11A 32 1F C6 LD (SamCP),A
0209++ C11D 3E 7A LD A,#7A
0210++ C11F 32 F6 C5 LD (OrnLD),A
0211++ C122 32 22 C6 LD (SamLD),A
0212++ C125 3E 80 LD A,#80
0213++ C127 32 19 C6 LD (SamClc2),A
0214++ C12A E1 POP HL
0215++ C12B 3E 05 LD A,5
0216++ C12D 32 C6 C4 LD (Version),A
0217++ C130 F5 PUSH AF
0218++ C131 3E 02 LD A,2
0219++ C133 F5 PUSH AF
0220++ C134
0221++ C134 3A 50 C0 LD A,(SETUP)
0222++ C137 E6 30 AND SETUP.TS02|SETUP.TSPT3
0223++ C139 28 10 JR Z,NOTS2
0224++ C13B
0225++ C13B FD 21 3A CA LD IY,VARS2+100
0226++ C13F 3E 01 LD A,1
0227++ C141 32 4E C9 LD (is_ts),A
0228++ C144 FD CB 9E C6 SET 0,(IY-100+VRS.ModNum)
0229++ C148 CD 8D C2 CALL INITPT2
0230++ C14B
0231++ C14B 01 4C C3 NOTS2 LD BC,PT2PD
0232++ C14E 21 87 86 LD HL,#8687
0233++ C151 11 6C CA LD DE,PT2EMPTYORN
0234++ C154
0235++ C154 INITCOMMON
0236++ C154
0237++ C154 IF Basic
0238++ C154~ LD IY,#5C3A
0239++ C154 ENDIF
0240++ C154
0241++ C154 ED 43 FD C2 LD (PTDEC),BC
0242++ C158 22 8C C7 LD (PsCalc),HL
0243++ C15B D5 PUSH DE
0244++ C15C
0245++ C15C ;note table data depacker
0246++ C15C ;(c) Ivan Roshin
0247++ C15C 11 19 C9 LD DE,T_PACK
0248++ C15F 01 BE CA LD BC,T1_+(2*49)-1
0249++ C162 1A TP_0 LD A,(DE)
0250++ C163 13 INC DE
0251++ C164 FE 1E CP 15*2
0252++ C166 30 06 JR NC,TP_1
0253++ C168 67 LD H,A
0254++ C169 1A LD A,(DE)
0255++ C16A 6F LD L,A
0256++ C16B 13 INC DE
0257++ C16C 18 07 JR TP_2
0258++ C16E D5 TP_1 PUSH DE
0259++ C16F 16 00 LD D,0
0260++ C171 5F LD E,A
0261++ C172 19 ADD HL,DE
0262++ C173 19 ADD HL,DE
0263++ C174 D1 POP DE
0264++ C175 7C TP_2 LD A,H
0265++ C176 02 LD (BC),A
0266++ C177 0B DEC BC
0267++ C178 7D LD A,L
0268++ C179 02 LD (BC),A
0269++ C17A 0B DEC BC
0270++ C17B D6 F0 SUB (#F8*2)&255
0271++ C17D 20 E3 JR NZ,TP_0
0272++ C17F
0273++ C17F 3C INC A
0274++ C180 32 BC C9 LD (VARS1+VRS.DelyCnt),A
0275++ C183 32 43 CA LD (VARS2+VRS.DelyCnt),A
0276++ C186 21 01 F0 LD HL,#F001 ;H - CHP.Volume, L - CHP.NtSkCn
0277++ C189 22 6D C9 LD (VARS1+VRS.ChanA+CHP.NtSkCn),HL
0278++ C18C 22 8A C9 LD (VARS1+VRS.ChanB+CHP.NtSkCn),HL
0279++ C18F 22 A7 C9 LD (VARS1+VRS.ChanC+CHP.NtSkCn),HL
0280++ C192 22 F4 C9 LD (VARS2+VRS.ChanA+CHP.NtSkCn),HL
0281++ C195 22 11 CA LD (VARS2+VRS.ChanB+CHP.NtSkCn),HL
0282++ C198 22 2E CA LD (VARS2+VRS.ChanC+CHP.NtSkCn),HL
0283++ C19B E1 POP HL
0284++ C19C 22 5F C9 LD (VARS1+VRS.ChanA+CHP.OrnPtr),HL
0285++ C19F 22 7C C9 LD (VARS1+VRS.ChanB+CHP.OrnPtr),HL
0286++ C1A2 22 99 C9 LD (VARS1+VRS.ChanC+CHP.OrnPtr),HL
0287++ C1A5 22 E6 C9 LD (VARS2+VRS.ChanA+CHP.OrnPtr),HL
0288++ C1A8 22 03 CA LD (VARS2+VRS.ChanB+CHP.OrnPtr),HL
0289++ C1AB 22 20 CA LD (VARS2+VRS.ChanC+CHP.OrnPtr),HL
0290++ C1AE
0291++ C1AE F1 POP AF
0292++ C1AF
0293++ C1AF ;NoteTableCreator (c) Ivan Roshin
0294++ C1AF ;A - NoteTableNumber*2+VersionForNoteTable
0295++ C1AF ;(xx1b - 3.xx..3.4r, xx0b - 3.4x..3.6x..VTII1.0)
0296++ C1AF
0297++ C1AF 21 C6 C8 LD HL,NT_DATA
0298++ C1B2 16 00 LD D,0
0299++ C1B4 87 ADD A,A
0300++ C1B5 5F LD E,A
0301++ C1B6 19 ADD HL,DE
0302++ C1B7 5E LD E,(HL)
0303++ C1B8 23 INC HL
0304++ C1B9 CB 3B SRL E
0305++ C1BB 9F SBC A,A
0306++ C1BC E6 A7 AND #A7 ;#00 (NOP) or #A7 (AND A)
0307++ C1BE 32 E6 C1 LD (L3),A
0308++ C1C1 EB EX DE,HL
0309++ C1C2 01 5D CA LD BC,T1_
0310++ C1C5 09 ADD HL,BC
0311++ C1C6
0312++ C1C6 1A LD A,(DE)
0313++ C1C7 C6 D6 ADD A,T_&255
0314++ C1C9 4F LD C,A
0315++ C1CA CE C8 ADC A,T_/256
0316++ C1CC 91 SUB C
0317++ C1CD 47 LD B,A
0318++ C1CE C5 PUSH BC
0319++ C1CF 11 4D CB LD DE,NT_
0320++ C1D2 D5 PUSH DE
0321++ C1D3
0322++ C1D3 06 0C LD B,12
0323++ C1D5 C5 L1 PUSH BC
0324++ C1D6 4E LD C,(HL)
0325++ C1D7 23 INC HL
0326++ C1D8 E5 PUSH HL
0327++ C1D9 46 LD B,(HL)
0328++ C1DA
0329++ C1DA D5 PUSH DE
0330++ C1DB EB EX DE,HL
0331++ C1DC 11 17 00 LD DE,23
0332++ C1DF DD 26 08 LD IXH,8
0333++ C1E2
0334++ C1E2 CB 38 L2 SRL B
0335++ C1E4 CB 19 RR C
0336++ C1E6 19 L3 DB #19 ;AND A or NOP
0337++ C1E7 79 LD A,C
0338++ C1E8 8A ADC A,D ;=ADC 0
0339++ C1E9 77 LD (HL),A
0340++ C1EA 23 INC HL
0341++ C1EB 78 LD A,B
0342++ C1EC 8A ADC A,D
0343++ C1ED 77 LD (HL),A
0344++ C1EE 19 ADD HL,DE
0345++ C1EF DD 25 DEC IXH
0346++ C1F1 20 EF JR NZ,L2
0347++ C1F3
0348++ C1F3 D1 POP DE
0349++ C1F4 13 INC DE
0350++ C1F5 13 INC DE
0351++ C1F6 E1 POP HL
0352++ C1F7 23 INC HL
0353++ C1F8 C1 POP BC
0354++ C1F9 10 DA DJNZ L1
0355++ C1FB
0356++ C1FB E1 POP HL
0357++ C1FC D1 POP DE
0358++ C1FD
0359++ C1FD 7B LD A,E
0360++ C1FE FE E2 CP TCOLD_1&255
0361++ C200 20 05 JR NZ,CORR_1
0362++ C202 3E FD LD A,#FD
0363++ C204 32 7B CB LD (NT_+#2E),A
0364++ C207
0365++ C207 1A CORR_1 LD A,(DE)
0366++ C208 A7 AND A
0367++ C209 28 11 JR Z,TC_EXIT
0368++ C20B 1F RRA
0369++ C20C F5 PUSH AF
0370++ C20D 87 ADD A,A
0371++ C20E 4F LD C,A
0372++ C20F 09 ADD HL,BC
0373++ C210 F1 POP AF
0374++ C211 30 02 JR NC,CORR_2
0375++ C213 35 DEC (HL)
0376++ C214 35 DEC (HL)
0377++ C215 34 CORR_2 INC (HL)
0378++ C216 A7 AND A
0379++ C217 ED 42 SBC HL,BC
0380++ C219 13 INC DE
0381++ C21A 18 EB JR CORR_1
0382++ C21C
0383++ C21C TC_EXIT
0384++ C21C
0385++ C21C F1 POP AF
0386++ C21D
0387++ C21D ;VolTableCreator (c) Ivan Roshin
0388++ C21D ;A - VersionForVolumeTable (0..4 - 3.xx..3.4x;
0389++ C21D ;5.. - 2.x,3.5x..3.6x..VTII1.0)
0390++ C21D
0391++ C21D FE 05 CP 5
0392++ C21F 21 11 00 LD HL,#11
0393++ C222 54 LD D,H
0394++ C223 5C LD E,H
0395++ C224 3E 17 LD A,#17
0396++ C226 30 03 JR NC,M1
0397++ C228 2D DEC L
0398++ C229 5D LD E,L
0399++ C22A AF XOR A
0400++ C22B 32 3C C2 M1 LD (M2),A
0401++ C22E
0402++ C22E DD 21 5D CA LD IX,VT_+16
0403++ C232
0404++ C232 0E 0F LD C,#F
0405++ C234 E5 INITV2 PUSH HL
0406++ C235
0407++ C235 19 ADD HL,DE
0408++ C236 EB EX DE,HL
0409++ C237 ED 62 SBC HL,HL
0410++ C239
0411++ C239 06 10 LD B,#10
0412++ C23B 7D INITV1 LD A,L
0413++ C23C 7D M2 DB #7D
0414++ C23D 7C LD A,H
0415++ C23E CE 00 ADC A,0
0416++ C240 DD 77 00 LD (IX),A
0417++ C243 DD 23 INC IX
0418++ C245 19 ADD HL,DE
0419++ C246 10 F3 DJNZ INITV1
0420++ C248
0421++ C248 E1 POP HL
0422++ C249 7B LD A,E
0423++ C24A FE 77 CP #77
0424++ C24C 20 01 JR NZ,M3
0425++ C24E 1C INC E
0426++ C24F 0D M3 DEC C
0427++ C250 20 E2 JR NZ,INITV2
0428++ C252
0429++ C252 C3 93 C8 JP ROUT
0430++ C255
0431++ C255 CD C8 C2 INITPT3 CALL SETMDAD
0432++ C258 E5 PUSH HL
0433++ C259 11 64 00 LD DE,100
0434++ C25C 19 ADD HL,DE
0435++ C25D 7E LD A,(HL)
0436++ C25E FD 77 08 LD (IY-100+VRS.Delay),A
0437++ C261 E5 PUSH HL
0438++ C262 DD E1 POP IX
0439++ C264 19 ADD HL,DE
0440++ C265 CD D6 C2 CALL SETCPPT
0441++ C268 DD 5E 02 LD E,(IX+102-100)
0442++ C26B 23 INC HL
0443++ C26C
0444++ C26C IF CurPosCounter
0445++ C26C~ LD (IY-100+VRS.PosSub),L
0446++ C26C ENDIF
0447++ C26C
0448++ C26C 19 ADD HL,DE
0449++ C26D CD DD C2 CALL SETLPPT
0450++ C270 D1 POP DE
0451++ C271 DD 6E 03 LD L,(IX+103-100)
0452++ C274 DD 66 04 LD H,(IX+104-100)
0453++ C277 19 ADD HL,DE
0454++ C278 CD C1 C2 CALL SETPTPT
0455++ C27B 21 A9 00 LD HL,169
0456++ C27E 19 ADD HL,DE
0457++ C27F CD CF C2 CALL SETORPT
0458++ C282 21 69 00 LD HL,105
0459++ C285 19 ADD HL,DE
0460++ C286
0461++ C286 FD 75 FA SETSMPT LD (IY-100+VRS.SamPtrs),L
0462++ C289 FD 74 FB LD (IY-100+VRS.SamPtrs+1),H
0463++ C28C C9 RET
0464++ C28D
0465++ C28D 7E INITPT2 LD A,(HL)
0466++ C28E FD 77 08 LD (IY-100+VRS.Delay),A
0467++ C291 E5 PUSH HL
0468++ C292 E5 PUSH HL
0469++ C293 E5 PUSH HL
0470++ C294 23 INC HL
0471++ C295 23 INC HL
0472++ C296 7E LD A,(HL)
0473++ C297 23 INC HL
0474++ C298 CD 86 C2 CALL SETSMPT
0475++ C29B 5E LD E,(HL)
0476++ C29C 23 INC HL
0477++ C29D 56 LD D,(HL)
0478++ C29E E1 POP HL
0479++ C29F A7 AND A
0480++ C2A0 ED 52 SBC HL,DE
0481++ C2A2 CD C8 C2 CALL SETMDAD
0482++ C2A5 E1 POP HL
0483++ C2A6 11 43 00 LD DE,67
0484++ C2A9 19 ADD HL,DE
0485++ C2AA CD CF C2 CALL SETORPT
0486++ C2AD 1E 20 LD E,32
0487++ C2AF 19 ADD HL,DE
0488++ C2B0 4E LD C,(HL)
0489++ C2B1 23 INC HL
0490++ C2B2 46 LD B,(HL)
0491++ C2B3 1E 1E LD E,30
0492++ C2B5 19 ADD HL,DE
0493++ C2B6 CD D6 C2 CALL SETCPPT
0494++ C2B9 5F LD E,A
0495++ C2BA 23 INC HL
0496++ C2BB
0497++ C2BB IF CurPosCounter
0498++ C2BB~ LD (IY-100+VRS.PosSub),L
0499++ C2BB ENDIF
0500++ C2BB
0501++ C2BB 19 ADD HL,DE
0502++ C2BC CD DD C2 CALL SETLPPT
0503++ C2BF E1 POP HL
0504++ C2C0 09 ADD HL,BC
0505++ C2C1
0506++ C2C1 FD 75 FC SETPTPT LD (IY-100+VRS.PatsPtr),L
0507++ C2C4 FD 74 FD LD (IY-100+VRS.PatsPtr+1),H
0508++ C2C7 C9 RET
0509++ C2C8
0510++ C2C8 FD 75 F6 SETMDAD LD (IY-100+VRS.MODADDR),L
0511++ C2CB FD 74 F7 LD (IY-100+VRS.MODADDR+1),H
0512++ C2CE C9 RET
0513++ C2CF
0514++ C2CF FD 75 F8 SETORPT LD (IY-100+VRS.OrnPtrs),L
0515++ C2D2 FD 74 F9 LD (IY-100+VRS.OrnPtrs+1),H
0516++ C2D5 C9 RET
0517++ C2D6
0518++ C2D6 FD 75 04 SETCPPT LD (IY-100+VRS.CrPsPtr),L
0519++ C2D9 FD 74 05 LD (IY-100+VRS.CrPsPtr+1),H
0520++ C2DC C9 RET
0521++ C2DD
0522++ C2DD FD 75 06 SETLPPT LD (IY-100+VRS.LPosPtr),L
0523++ C2E0 FD 74 07 LD (IY-100+VRS.LPosPtr+1),H
0524++ C2E3 C9 RET
0525++ C2E4
0526++ C2E4 FD 75 13 SETENBS LD (IY-100+VRS.EnvBase),L
0527++ C2E7 FD 74 14 LD (IY-100+VRS.EnvBase+1),H
0528++ C2EA C9 RET
0529++ C2EB
0530++ C2EB FD 75 0C SETESLD LD (IY-100+VRS.CurESld),L
0531++ C2EE FD 74 0D LD (IY-100+VRS.CurESld+1),H
0532++ C2F1 C9 RET
0533++ C2F2
0534++ C2F2 FD E5 GETIX PUSH IY
0535++ C2F4 DD E1 POP IX
0536++ C2F6 DD 19 ADD IX,DE
0537++ C2F8 C9 RET
0538++ C2F9
0539++ C2F9 CD F2 C2 PTDECOD CALL GETIX
0540++ C2FC PTDEC EQU $+1
0541++ C2FC C3 C3 C3 JP #C3C3
0542++ C2FF
0543++ C2FF ;PT2 pattern decoder
0544++ C2FF CD 95 C5 PD2_SAM CALL SETSAM
0545++ C302 18 4A JR PD2_LOOP
0546++ C304
0547++ C304 DD 77 08 PD2_EOff LD (IX-12+CHP.Env_En),A
0548++ C307 18 45 JR PD2_LOOP
0549++ C309
0550++ C309 DD 36 08 10 PD2_ENV LD (IX-12+CHP.Env_En),16
0551++ C30D FD 77 22 LD (IY-100+VRS.AYREGS+EnvTp),A
0552++ C310 0A LD A,(BC)
0553++ C311 03 INC BC
0554++ C312 6F LD L,A
0555++ C313 0A LD A,(BC)
0556++ C314 03 INC BC
0557++ C315 67 LD H,A
0558++ C316 CD E4 C2 CALL SETENBS
0559++ C319 18 33 JR PD2_LOOP
0560++ C31B
0561++ C31B CD 76 C5 PD2_ORN CALL SETORN
0562++ C31E 18 2E JR PD2_LOOP
0563++ C320
0564++ C320 3C PD2_SKIP INC A
0565++ C321 DD 77 05 LD (IX-12+CHP.NNtSkp),A
0566++ C324 18 28 JR PD2_LOOP
0567++ C326
0568++ C326 0F PD2_VOL RRCA
0569++ C327 0F RRCA
0570++ C328 0F RRCA
0571++ C329 0F RRCA
0572++ C32A DD 77 10 LD (IX-12+CHP.Volume),A
0573++ C32D 18 1F JR PD2_LOOP
0574++ C32F
0575++ C32F CD 46 C5 PD2_DEL CALL C_DELAY
0576++ C332 18 1A JR PD2_LOOP
0577++ C334
0578++ C334 DD CB 09 D6 PD2_GLIS SET 2,(IX-12+CHP.Flags)
0579++ C338 3C INC A
0580++ C339 DD 77 0A LD (IX-12+CHP.TnSlDl),A
0581++ C33C DD 77 F9 LD (IX-12+CHP.TSlCnt),A
0582++ C33F 0A LD A,(BC)
0583++ C340 03 INC BC
0584++ C341 DD 77 0B LD (IX-12+CHP.TSlStp),A
0585++ C344 87 ADD A,A
0586++ C345 9F SBC A,A
0587++ C346 DD 77 0C LD (IX-12+CHP.TSlStp+1),A
0588++ C349 37 SCF
0589++ C34A 18 01 JR PD2_LP2
0590++ C34C
0591++ C34C A7 PT2PD AND A
0592++ C34D
0593++ C34D 08 PD2_LP2 EX AF,AF'
0594++ C34E
0595++ C34E 0A PD2_LOOP LD A,(BC)
0596++ C34F 03 INC BC
0597++ C350 C6 20 ADD A,#20
0598++ C352 28 3F JR Z,PD2_REL
0599++ C354 38 A9 JR C,PD2_SAM
0600++ C356 C6 60 ADD A,96
0601++ C358 38 3E JR C,PD2_NOTE
0602++ C35A 3C INC A
0603++ C35B 28 A7 JR Z,PD2_EOff
0604++ C35D C6 0F ADD A,15
0605++ C35F CA 75 C4 JP Z,PD_FIN
0606++ C362 38 A5 JR C,PD2_ENV
0607++ C364 C6 10 ADD A,#10
0608++ C366 38 B3 JR C,PD2_ORN
0609++ C368 C6 40 ADD A,#40
0610++ C36A 38 B4 JR C,PD2_SKIP
0611++ C36C C6 10 ADD A,#10
0612++ C36E 38 B6 JR C,PD2_VOL
0613++ C370 3C INC A
0614++ C371 28 BC JR Z,PD2_DEL
0615++ C373 3C INC A
0616++ C374 28 BE JR Z,PD2_GLIS
0617++ C376 3C INC A
0618++ C377 28 0A JR Z,PD2_PORT
0619++ C379 3C INC A
0620++ C37A 28 12 JR Z,PD2_STOP
0621++ C37C 0A LD A,(BC)
0622++ C37D 03 INC BC
0623++ C37E DD 77 F7 LD (IX-12+CHP.CrNsSl),A
0624++ C381 18 CB JR PD2_LOOP
0625++ C383
0626++ C383 DD CB 09 96 PD2_PORT RES 2,(IX-12+CHP.Flags)
0627++ C387 0A LD A,(BC)
0628++ C388 03 INC BC
0629++ C389 03 INC BC ;ignoring precalc delta to right sound
0630++ C38A 03 INC BC
0631++ C38B 37 SCF
0632++ C38C 18 BF JR PD2_LP2
0633++ C38E
0634++ C38E DD 77 F9 PD2_STOP LD (IX-12+CHP.TSlCnt),A
0635++ C391 18 BB JR PD2_LOOP
0636++ C393
0637++ C393 DD 77 09 PD2_REL LD (IX-12+CHP.Flags),A
0638++ C396 18 2C JR PD2_EXIT
0639++ C398
0640++ C398 6F PD2_NOTE LD L,A
0641++ C399 DD 7E 06 LD A,(IX-12+CHP.Note)
0642++ C39C 32 AF C4 LD (PrNote+1),A
0643++ C39F DD 75 06 LD (IX-12+CHP.Note),L
0644++ C3A2 AF XOR A
0645++ C3A3 DD 77 F9 LD (IX-12+CHP.TSlCnt),A
0646++ C3A6 DD CB 09 C6 SET 0,(IX-12+CHP.Flags)
0647++ C3AA 08 EX AF,AF'
0648++ C3AB 30 16 JR NC,NOGLIS2
0649++ C3AD DD CB 09 56 BIT 2,(IX-12+CHP.Flags)
0650++ C3B1 20 0C JR NZ,NOPORT2
0651++ C3B3 32 D5 C4 LD (LoStep),A
0652++ C3B6 87 ADD A,A
0653++ C3B7 9F SBC A,A
0654++ C3B8 08 EX AF,AF'
0655++ C3B9 67 LD H,A
0656++ C3BA 6F LD L,A
0657++ C3BB 3C INC A
0658++ C3BC CD 90 C4 CALL SETPORT
0659++ C3BF DD 36 F9 01 NOPORT2 LD (IX-12+CHP.TSlCnt),1
0660++ C3C3 AF NOGLIS2 XOR A
0661++ C3C4
0662++ C3C4
0663++ C3C4 DD 77 F5 PD2_EXIT LD (IX-12+CHP.PsInSm),A
0664++ C3C7 DD 77 F4 LD (IX-12+CHP.PsInOr),A
0665++ C3CA DD 77 FA LD (IX-12+CHP.CrTnSl),A
0666++ C3CD DD 77 FB LD (IX-12+CHP.CrTnSl+1),A
0667++ C3D0 C3 75 C4 JP PD_FIN
0668++ C3D3
0669++ C3D3 ;PT3 pattern decoder
0670++ C3D3 DD 36 08 00 PD_OrSm LD (IX-12+CHP.Env_En),0
0671++ C3D7 CD 76 C5 CALL SETORN
0672++ C3DA 0A PD_SAM_ LD A,(BC)
0673++ C3DB 03 INC BC
0674++ C3DC 0F RRCA
0675++ C3DD
0676++ C3DD CD 95 C5 PD_SAM CALL SETSAM
0677++ C3E0 18 3F JR PD_LOOP
0678++ C3E2
0679++ C3E2 0F PD_VOL RRCA
0680++ C3E3 0F RRCA
0681++ C3E4 0F RRCA
0682++ C3E5 0F RRCA
0683++ C3E6 DD 77 10 LD (IX-12+CHP.Volume),A
0684++ C3E9 18 39 JR PD_LP2
0685++ C3EB
0686++ C3EB DD 77 08 PD_EOff LD (IX-12+CHP.Env_En),A
0687++ C3EE DD 77 F4 LD (IX-12+CHP.PsInOr),A
0688++ C3F1 18 31 JR PD_LP2
0689++ C3F3
0690++ C3F3 3D PD_SorE DEC A
0691++ C3F4 20 07 JR NZ,PD_ENV
0692++ C3F6 0A LD A,(BC)
0693++ C3F7 03 INC BC
0694++ C3F8 DD 77 05 LD (IX-12+CHP.NNtSkp),A
0695++ C3FB 18 27 JR PD_LP2
0696++ C3FD
0697++ C3FD CD 5B C5 PD_ENV CALL SETENV
0698++ C400 18 22 JR PD_LP2
0699++ C402
0700++ C402 CD 76 C5 PD_ORN CALL SETORN
0701++ C405 18 1A JR PD_LOOP
0702++ C407
0703++ C407 DD 77 08 PD_ESAM LD (IX-12+CHP.Env_En),A
0704++ C40A DD 77 F4 LD (IX-12+CHP.PsInOr),A
0705++ C40D C4 5B C5 CALL NZ,SETENV
0706++ C410 18 C8 JR PD_SAM_
0707++ C412
0708++ C412 DD 7E 06 PT3PD LD A,(IX-12+CHP.Note)
0709++ C415 32 AF C4 LD (PrNote+1),A
0710++ C418 DD 6E FA LD L,(IX-12+CHP.CrTnSl)
0711++ C41B DD 66 FB LD H,(IX-12+CHP.CrTnSl+1)
0712++ C41E 22 CC C4 LD (PrSlide+1),HL
0713++ C421
0714++ C421 11 10 20 PD_LOOP LD DE,#2010
0715++ C424 0A PD_LP2 LD A,(BC)
0716++ C425 03 INC BC
0717++ C426 83 ADD A,E
0718++ C427 38 AA JR C,PD_OrSm
0719++ C429 82 ADD A,D
0720++ C42A 28 49 JR Z,PD_FIN
0721++ C42C 38 AF JR C,PD_SAM
0722++ C42E 83 ADD A,E
0723++ C42F 28 25 JR Z,PD_REL
0724++ C431 38 AF JR C,PD_VOL
0725++ C433 83 ADD A,E
0726++ C434 28 B5 JR Z,PD_EOff
0727++ C436 38 BB JR C,PD_SorE
0728++ C438 C6 60 ADD A,96
0729++ C43A 38 20 JR C,PD_NOTE
0730++ C43C 83 ADD A,E
0731++ C43D 38 C3 JR C,PD_ORN
0732++ C43F 82 ADD A,D
0733++ C440 38 0F JR C,PD_NOIS
0734++ C442 83 ADD A,E
0735++ C443 38 C2 JR C,PD_ESAM
0736++ C445 87 ADD A,A
0737++ C446 5F LD E,A
0738++ C447 21 D1 A4 LD HL,(SPCCOMS+#FF20-#2000)&65535
0739++ C44A 19 ADD HL,DE
0740++ C44B 5E LD E,(HL)
0741++ C44C 23 INC HL
0742++ C44D 56 LD D,(HL)
0743++ C44E D5 PUSH DE
0744++ C44F 18 D0 JR PD_LOOP
0745++ C451
0746++ C451 FD 77 10 PD_NOIS LD (IY-100+VRS.Ns_Base),A
0747++ C454 18 CE JR PD_LP2
0748++ C456
0749++ C456 DD CB 09 86 PD_REL RES 0,(IX-12+CHP.Flags)
0750++ C45A 18 08 JR PD_RES
0751++ C45C
0752++ C45C DD 77 06 PD_NOTE LD (IX-12+CHP.Note),A
0753++ C45F DD CB 09 C6 SET 0,(IX-12+CHP.Flags)
0754++ C463 AF XOR A
0755++ C464
0756++ C464 ED 73 73 C4 PD_RES LD (PDSP_+1),SP
0757++ C468 DD F9 LD SP,IX
0758++ C46A 67 LD H,A
0759++ C46B 6F LD L,A
0760++ C46C E5 PUSH HL
0761++ C46D E5 PUSH HL
0762++ C46E E5 PUSH HL
0763++ C46F E5 PUSH HL
0764++ C470 E5 PUSH HL
0765++ C471 E5 PUSH HL
0766++ C472 31 31 31 PDSP_ LD SP,#3131
0767++ C475
0768++ C475 DD 7E 05 PD_FIN LD A,(IX-12+CHP.NNtSkp)
0769++ C478 DD 77 0F LD (IX-12+CHP.NtSkCn),A
0770++ C47B C9 RET
0771++ C47C
0772++ C47C 0A C_PORTM LD A,(BC)
0773++ C47D 03 INC BC
0774++ C47E ;SKIP PRECALCULATED TONE DELTA (BECAUSE
0775++ C47E ;CANNOT BE RIGHT AFTER PT3 COMPILATION)
0776++ C47E 03 INC BC
0777++ C47F 03 INC BC
0778++ C480 08 EX AF,AF'
0779++ C481 0A LD A,(BC) ;SIGNED TONE STEP
0780++ C482 03 INC BC
0781++ C483 32 D5 C4 LD (LoStep),A
0782++ C486 0A LD A,(BC)
0783++ C487 03 INC BC
0784++ C488 A7 AND A
0785++ C489 08 EX AF,AF'
0786++ C48A DD 6E FA LD L,(IX-12+CHP.CrTnSl)
0787++ C48D DD 66 FB LD H,(IX-12+CHP.CrTnSl+1)
0788++ C490
0789++ C490 ;Set portamento variables
0790++ C490 ;A - Delay; A' - Hi(Step); ZF' - (A'=0); HL - CrTnSl
0791++ C490
0792++ C490 DD CB 09 96 SETPORT RES 2,(IX-12+CHP.Flags)
0793++ C494 DD 77 0A LD (IX-12+CHP.TnSlDl),A
0794++ C497 DD 77 F9 LD (IX-12+CHP.TSlCnt),A
0795++ C49A E5 PUSH HL
0796++ C49B 11 4D CB LD DE,NT_
0797++ C49E DD 7E 06 LD A,(IX-12+CHP.Note)
0798++ C4A1 DD 77 07 LD (IX-12+CHP.SlToNt),A
0799++ C4A4 87 ADD A,A
0800++ C4A5 6F LD L,A
0801++ C4A6 26 00 LD H,0
0802++ C4A8 19 ADD HL,DE
0803++ C4A9 7E LD A,(HL)
0804++ C4AA 23 INC HL
0805++ C4AB 66 LD H,(HL)
0806++ C4AC 6F LD L,A
0807++ C4AD E5 PUSH HL
0808++ C4AE 3E 3E PrNote LD A,#3E
0809++ C4B0 DD 77 06 LD (IX-12+CHP.Note),A
0810++ C4B3 87 ADD A,A
0811++ C4B4 6F LD L,A
0812++ C4B5 26 00 LD H,0
0813++ C4B7 19 ADD HL,DE
0814++ C4B8 5E LD E,(HL)
0815++ C4B9 23 INC HL
0816++ C4BA 56 LD D,(HL)
0817++ C4BB E1 POP HL
0818++ C4BC ED 52 SBC HL,DE
0819++ C4BE DD 75 0D LD (IX-12+CHP.TnDelt),L
0820++ C4C1 DD 74 0E LD (IX-12+CHP.TnDelt+1),H
0821++ C4C4 D1 POP DE
0822++ C4C5 Version EQU $+1
0823++ C4C5 3E 3E LD A,#3E
0824++ C4C7 FE 06 CP 6
0825++ C4C9 38 09 JR C,OLDPRTM ;Old 3xxx for PT v3.5-
0826++ C4CB 11 11 11 PrSlide LD DE,#1111
0827++ C4CE DD 73 FA LD (IX-12+CHP.CrTnSl),E
0828++ C4D1 DD 72 FB LD (IX-12+CHP.CrTnSl+1),D
0829++ C4D4 LoStep EQU $+1
0830++ C4D4 3E 3E OLDPRTM LD A,#3E
0831++ C4D6 08 EX AF,AF'
0832++ C4D7 28 01 JR Z,NOSIG
0833++ C4D9 EB EX DE,HL
0834++ C4DA ED 52 NOSIG SBC HL,DE
0835++ C4DC F2 E4 C4 JP P,SET_STP
0836++ C4DF 2F CPL
0837++ C4E0 08 EX AF,AF'
0838++ C4E1 ED 44 NEG
0839++ C4E3 08 EX AF,AF'
0840++ C4E4 DD 77 0C SET_STP LD (IX-12+CHP.TSlStp+1),A
0841++ C4E7 08 EX AF,AF'
0842++ C4E8 DD 77 0B LD (IX-12+CHP.TSlStp),A
0843++ C4EB DD 36 FE 00 LD (IX-12+CHP.COnOff),0
0844++ C4EF C9 RET
0845++ C4F0
0846++ C4F0 DD CB 09 D6 C_GLISS SET 2,(IX-12+CHP.Flags)
0847++ C4F4 0A LD A,(BC)
0848++ C4F5 03 INC BC
0849++ C4F6 DD 77 0A LD (IX-12+CHP.TnSlDl),A
0850++ C4F9 A7 AND A
0851++ C4FA 20 07 JR NZ,GL36
0852++ C4FC 3A C6 C4 LD A,(Version) ;AlCo PT3.7+
0853++ C4FF FE 07 CP 7
0854++ C501 9F SBC A,A
0855++ C502 3C INC A
0856++ C503 DD 77 F9 GL36 LD (IX-12+CHP.TSlCnt),A
0857++ C506 0A LD A,(BC)
0858++ C507 03 INC BC
0859++ C508 08 EX AF,AF'
0860++ C509 0A LD A,(BC)
0861++ C50A 03 INC BC
0862++ C50B 18 D7 JR SET_STP
0863++ C50D
0864++ C50D 0A C_SMPOS LD A,(BC)
0865++ C50E 03 INC BC
0866++ C50F DD 77 F5 LD (IX-12+CHP.PsInSm),A
0867++ C512 C9 RET
0868++ C513
0869++ C513 0A C_ORPOS LD A,(BC)
0870++ C514 03 INC BC
0871++ C515 DD 77 F4 LD (IX-12+CHP.PsInOr),A
0872++ C518 C9 RET
0873++ C519
0874++ C519 0A C_VIBRT LD A,(BC)
0875++ C51A 03 INC BC
0876++ C51B DD 77 FF LD (IX-12+CHP.OnOffD),A
0877++ C51E DD 77 FE LD (IX-12+CHP.COnOff),A
0878++ C521 0A LD A,(BC)
0879++ C522 03 INC BC
0880++ C523 DD 77 00 LD (IX-12+CHP.OffOnD),A
0881++ C526 AF XOR A
0882++ C527 DD 77 F9 LD (IX-12+CHP.TSlCnt),A
0883++ C52A DD 77 FA LD (IX-12+CHP.CrTnSl),A
0884++ C52D DD 77 FB LD (IX-12+CHP.CrTnSl+1),A
0885++ C530 C9 RET
0886++ C531
0887++ C531 0A C_ENGLS LD A,(BC)
0888++ C532 03 INC BC
0889++ C533 FD 77 0E LD (IY-100+VRS.Env_Del),A
0890++ C536 FD 77 0F LD (IY-100+VRS.CurEDel),A
0891++ C539 0A LD A,(BC)
0892++ C53A 03 INC BC
0893++ C53B 6F LD L,A
0894++ C53C 0A LD A,(BC)
0895++ C53D 03 INC BC
0896++ C53E 67 LD H,A
0897++ C53F FD 75 0A LD (IY-100+VRS.ESldAdd),L
0898++ C542 FD 74 0B LD (IY-100+VRS.ESldAdd+1),H
0899++ C545 C9 RET
0900++ C546
0901++ C546 0A C_DELAY LD A,(BC)
0902++ C547 03 INC BC
0903++ C548 FD 77 08 LD (IY-100+VRS.Delay),A
0904++ C54B 21 D8 C9 LD HL,VARS2+VRS.ModNum ;if AlCo_TS
0905++ C54E CB 4E BIT 1,(HL)
0906++ C550 C8 RET Z
0907++ C551 32 BB C9 LD (VARS1+VRS.Delay),A
0908++ C554 32 BC C9 LD (VARS1+VRS.DelyCnt),A
0909++ C557 32 42 CA LD (VARS2+VRS.Delay),A
0910++ C55A C9 RET
0911++ C55B
0912++ C55B DD 73 08 SETENV LD (IX-12+CHP.Env_En),E
0913++ C55E FD 77 22 LD (IY-100+VRS.AYREGS+EnvTp),A
0914++ C561 0A LD A,(BC)
0915++ C562 03 INC BC
0916++ C563 67 LD H,A
0917++ C564 0A LD A,(BC)
0918++ C565 03 INC BC
0919++ C566 6F LD L,A
0920++ C567 CD E4 C2 CALL SETENBS
0921++ C56A AF XOR A
0922++ C56B DD 77 F4 LD (IX-12+CHP.PsInOr),A
0923++ C56E FD 77 0F LD (IY-100+VRS.CurEDel),A
0924++ C571 67 LD H,A
0925++ C572 6F LD L,A
0926++ C573 C3 EB C2 JP SETESLD
0927++ C576
0928++ C576 87 SETORN ADD A,A
0929++ C577 5F LD E,A
0930++ C578 16 00 LD D,0
0931++ C57A DD 72 F4 LD (IX-12+CHP.PsInOr),D
0932++ C57D FD 6E F8 LD L,(IY-100+VRS.OrnPtrs)
0933++ C580 FD 66 F9 LD H,(IY-100+VRS.OrnPtrs+1)
0934++ C583 19 ADD HL,DE
0935++ C584 5E LD E,(HL)
0936++ C585 23 INC HL
0937++ C586 56 LD D,(HL)
0938++ C587 FD 6E F6 LD L,(IY-100+VRS.MODADDR)
0939++ C58A FD 66 F7 LD H,(IY-100+VRS.MODADDR+1)
0940++ C58D 19 ADD HL,DE
0941++ C58E DD 75 01 LD (IX-12+CHP.OrnPtr),L
0942++ C591 DD 74 02 LD (IX-12+CHP.OrnPtr+1),H
0943++ C594 C9 C_NOP RET
0944++ C595
0945++ C595 87 SETSAM ADD A,A
0946++ C596 5F LD E,A
0947++ C597 16 00 LD D,0
0948++ C599 FD 6E FA LD L,(IY-100+VRS.SamPtrs);
0949++ C59C FD 66 FB LD H,(IY-100+VRS.SamPtrs+1);
0950++ C59F 19 ADD HL,DE
0951++ C5A0 5E LD E,(HL)
0952++ C5A1 23 INC HL
0953++ C5A2 56 LD D,(HL)
0954++ C5A3 FD 6E F6 LD L,(IY-100+VRS.MODADDR)
0955++ C5A6 FD 66 F7 LD H,(IY-100+VRS.MODADDR+1)
0956++ C5A9 19 ADD HL,DE
0957++ C5AA DD 75 03 LD (IX-12+CHP.SamPtr),L
0958++ C5AD DD 74 04 LD (IX-12+CHP.SamPtr+1),H
0959++ C5B0 C9 RET
0960++ C5B1
0961++ C5B1 ;ALL 16 ADDRESSES TO PROTECT FROM BROKEN PT3 MODULES
0962++ C5B1 94 C5 SPCCOMS DW C_NOP
0963++ C5B3 F0 C4 DW C_GLISS
0964++ C5B5 7C C4 DW C_PORTM
0965++ C5B7 0D C5 DW C_SMPOS
0966++ C5B9 13 C5 DW C_ORPOS
0967++ C5BB 19 C5 DW C_VIBRT
0968++ C5BD 94 C5 DW C_NOP
0969++ C5BF 94 C5 DW C_NOP
0970++ C5C1 31 C5 DW C_ENGLS
0971++ C5C3 46 C5 DW C_DELAY
0972++ C5C5 94 C5 DW C_NOP
0973++ C5C7 94 C5 DW C_NOP
0974++ C5C9 94 C5 DW C_NOP
0975++ C5CB 94 C5 DW C_NOP
0976++ C5CD 94 C5 DW C_NOP
0977++ C5CF 94 C5 DW C_NOP
0978++ C5D1
0979++ C5D1 CD F2 C2 CHREGS CALL GETIX
0980++ C5D4 AF XOR A
0981++ C5D5 32 0E C8 LD (Ampl),A
0982++ C5D8 DD CB 15 46 BIT 0,(IX+CHP.Flags)
0983++ C5DC E5 PUSH HL
0984++ C5DD CA 24 C7 JP Z,CH_EXIT
0985++ C5E0 ED 73 6E C6 LD (CSP_+1),SP
0986++ C5E4 DD 6E 0D LD L,(IX+CHP.OrnPtr)
0987++ C5E7 DD 66 0E LD H,(IX+CHP.OrnPtr+1)
0988++ C5EA F9 LD SP,HL
0989++ C5EB D1 POP DE
0990++ C5EC 67 LD H,A
0991++ C5ED DD 7E 00 LD A,(IX+CHP.PsInOr)
0992++ C5F0 6F LD L,A
0993++ C5F1 39 ADD HL,SP
0994++ C5F2 3C INC A
0995++ C5F3 ;PT2 PT3
0996++ C5F3 3C OrnCP INC A ;CP E CP D
0997++ C5F4 38 01 JR C,CH_ORPS
0998++ C5F6 01 OrnLD DB 1 ;LD A,D LD A,E
0999++ C5F7 DD 77 00 CH_ORPS LD (IX+CHP.PsInOr),A
1000++ C5FA DD 7E 12 LD A,(IX+CHP.Note)
1001++ C5FD 86 ADD A,(HL)
1002++ C5FE F2 02 C6 JP P,CH_NTP
1003++ C601 AF XOR A
1004++ C602 FE 60 CH_NTP CP 96
1005++ C604 38 02 JR C,CH_NOK
1006++ C606 3E 5F LD A,95
1007++ C608 87 CH_NOK ADD A,A
1008++ C609 08 EX AF,AF'
1009++ C60A DD 6E 0F LD L,(IX+CHP.SamPtr)
1010++ C60D DD 66 10 LD H,(IX+CHP.SamPtr+1)
1011++ C610 F9 LD SP,HL
1012++ C611 D1 POP DE
1013++ C612 26 00 LD H,0
1014++ C614 DD 7E 01 LD A,(IX+CHP.PsInSm)
1015++ C617 47 LD B,A
1016++ C618 87 ADD A,A
1017++ C619 87 SamClc2 ADD A,A ;or ADD A,B for PT2
1018++ C61A 6F LD L,A
1019++ C61B 39 ADD HL,SP
1020++ C61C F9 LD SP,HL
1021++ C61D 78 LD A,B
1022++ C61E 3C INC A
1023++ C61F ;PT2 PT3
1024++ C61F 3C SamCP INC A ;CP E CP D
1025++ C620 38 01 JR C,CH_SMPS
1026++ C622 01 SamLD DB 1 ;LD A,D LD A,E
1027++ C623 DD 77 01 CH_SMPS LD (IX+CHP.PsInSm),A
1028++ C626 C1 POP BC
1029++ C627 E1 POP HL
1030++ C628
1031++ C628 ;Convert PT2 sample to PT3
1032++ C628 ;PT2 PT3
1033++ C628 E1 SamCnv POP HL ;BIT 2,C JR e_
1034++ C629 E1 POP HL
1035++ C62A 60 LD H,B
1036++ C62B 20 06 JR NZ,$+8
1037++ C62D EB EX DE,HL
1038++ C62E A7 AND A
1039++ C62F ED 62 SBC HL,HL
1040++ C631 ED 52 SBC HL,DE
1041++ C633 51 LD D,C
1042++ C634 CB 19 RR C
1043++ C636 9F SBC A,A
1044++ C637 2F CPL
1045++ C638 E6 3E AND #3E
1046++ C63A CB 19 RR C
1047++ C63C CB 18 RR B
1048++ C63E A1 AND C
1049++ C63F 4F LD C,A
1050++ C640 78 LD A,B
1051++ C641 1F RRA
1052++ C642 1F RRA
1053++ C643 CB 1A RR D
1054++ C645 1F RRA
1055++ C646 E6 9F AND #9F
1056++ C648 47 LD B,A
1057++ C649
1058++ C649 DD 5E 08 e_ LD E,(IX+CHP.TnAcc)
1059++ C64C DD 56 09 LD D,(IX+CHP.TnAcc+1)
1060++ C64F 19 ADD HL,DE
1061++ C650 CB 70 BIT 6,B
1062++ C652 28 06 JR Z,CH_NOAC
1063++ C654 DD 75 08 LD (IX+CHP.TnAcc),L
1064++ C657 DD 74 09 LD (IX+CHP.TnAcc+1),H
1065++ C65A EB CH_NOAC EX DE,HL
1066++ C65B 08 EX AF,AF'
1067++ C65C C6 4D ADD A,NT_&255
1068++ C65E 6F LD L,A
1069++ C65F CE CB ADC A,NT_/256
1070++ C661 95 SUB L
1071++ C662 67 LD H,A
1072++ C663 F9 LD SP,HL
1073++ C664 E1 POP HL
1074++ C665 19 ADD HL,DE
1075++ C666 DD 5E 06 LD E,(IX+CHP.CrTnSl)
1076++ C669 DD 56 07 LD D,(IX+CHP.CrTnSl+1)
1077++ C66C 19 ADD HL,DE
1078++ C66D 31 31 31 CSP_ LD SP,#3131
1079++ C670 E3 EX (SP),HL
1080++ C671 AF XOR A
1081++ C672 DD B6 05 OR (IX+CHP.TSlCnt)
1082++ C675 28 3E JR Z,CH_AMP
1083++ C677 DD 35 05 DEC (IX+CHP.TSlCnt)
1084++ C67A 20 39 JR NZ,CH_AMP
1085++ C67C DD 7E 16 LD A,(IX+CHP.TnSlDl)
1086++ C67F DD 77 05 LD (IX+CHP.TSlCnt),A
1087++ C682 DD 6E 17 LD L,(IX+CHP.TSlStp)
1088++ C685 DD 66 18 LD H,(IX+CHP.TSlStp+1)
1089++ C688 7C LD A,H
1090++ C689 19 ADD HL,DE
1091++ C68A DD 75 06 LD (IX+CHP.CrTnSl),L
1092++ C68D DD 74 07 LD (IX+CHP.CrTnSl+1),H
1093++ C690 DD CB 15 56 BIT 2,(IX+CHP.Flags)
1094++ C694 20 1F JR NZ,CH_AMP
1095++ C696 DD 5E 19 LD E,(IX+CHP.TnDelt)
1096++ C699 DD 56 1A LD D,(IX+CHP.TnDelt+1)
1097++ C69C A7 AND A
1098++ C69D 28 01 JR Z,CH_STPP
1099++ C69F EB EX DE,HL
1100++ C6A0 ED 52 CH_STPP SBC HL,DE
1101++ C6A2 FA B5 C6 JP M,CH_AMP
1102++ C6A5 DD 7E 13 LD A,(IX+CHP.SlToNt)
1103++ C6A8 DD 77 12 LD (IX+CHP.Note),A
1104++ C6AB AF XOR A
1105++ C6AC DD 77 05 LD (IX+CHP.TSlCnt),A
1106++ C6AF DD 77 06 LD (IX+CHP.CrTnSl),A
1107++ C6B2 DD 77 07 LD (IX+CHP.CrTnSl+1),A
1108++ C6B5 DD 7E 02 CH_AMP LD A,(IX+CHP.CrAmSl)
1109++ C6B8 CB 79 BIT 7,C
1110++ C6BA 28 13 JR Z,CH_NOAM
1111++ C6BC CB 71 BIT 6,C
1112++ C6BE 28 07 JR Z,CH_AMIN
1113++ C6C0 FE 0F CP 15
1114++ C6C2 28 0B JR Z,CH_NOAM
1115++ C6C4 3C INC A
1116++ C6C5 18 05 JR CH_SVAM
1117++ C6C7 FE F1 CH_AMIN CP -15
1118++ C6C9 28 04 JR Z,CH_NOAM
1119++ C6CB 3D DEC A
1120++ C6CC DD 77 02 CH_SVAM LD (IX+CHP.CrAmSl),A
1121++ C6CF 6F CH_NOAM LD L,A
1122++ C6D0 78 LD A,B
1123++ C6D1 E6 0F AND 15
1124++ C6D3 85 ADD A,L
1125++ C6D4 F2 D8 C6 JP P,CH_APOS
1126++ C6D7 AF XOR A
1127++ C6D8 FE 10 CH_APOS CP 16
1128++ C6DA 38 02 JR C,CH_VOL
1129++ C6DC 3E 0F LD A,15
1130++ C6DE DD B6 1C CH_VOL OR (IX+CHP.Volume)
1131++ C6E1 C6 4D ADD A,VT_&255
1132++ C6E3 6F LD L,A
1133++ C6E4 CE CA ADC A,VT_/256
1134++ C6E6 95 SUB L
1135++ C6E7 67 LD H,A
1136++ C6E8 7E LD A,(HL)
1137++ C6E9 CB 41 CH_ENV BIT 0,C
1138++ C6EB 20 03 JR NZ,CH_NOEN
1139++ C6ED DD B6 14 OR (IX+CHP.Env_En)
1140++ C6F0 32 0E C8 CH_NOEN LD (Ampl),A
1141++ C6F3 CB 78 BIT 7,B
1142++ C6F5 79 LD A,C
1143++ C6F6 28 1A JR Z,NO_ENSL
1144++ C6F8 17 RLA
1145++ C6F9 17 RLA
1146++ C6FA CB 2F SRA A
1147++ C6FC CB 2F SRA A
1148++ C6FE CB 2F SRA A
1149++ C700 DD 86 04 ADD A,(IX+CHP.CrEnSl) ;SEE COMMENT BELOW
1150++ C703 CB 68 BIT 5,B
1151++ C705 28 03 JR Z,NO_ENAC
1152++ C707 DD 77 04 LD (IX+CHP.CrEnSl),A
1153++ C70A FD 86 12 NO_ENAC ADD A,(IY-100+VRS.AddToEn) ;BUG IN PT3 - NEED WORD HERE
1154++ C70D FD 77 12 LD (IY-100+VRS.AddToEn),A
1155++ C710 18 0E JR CH_MIX
1156++ C712 1F NO_ENSL RRA
1157++ C713 DD 86 03 ADD A,(IX+CHP.CrNsSl)
1158++ C716 FD 77 11 LD (IY-100+VRS.AddToNs),A
1159++ C719 CB 68 BIT 5,B
1160++ C71B 28 03 JR Z,CH_MIX
1161++ C71D DD 77 03 LD (IX+CHP.CrNsSl),A
1162++ C720 78 CH_MIX LD A,B
1163++ C721 1F RRA
1164++ C722 E6 48 AND #48
1165++ C724 FD B6 1C CH_EXIT OR (IY-100+VRS.AYREGS+Mixer)
1166++ C727 0F RRCA
1167++ C728 FD 77 1C LD (IY-100+VRS.AYREGS+Mixer),A
1168++ C72B E1 POP HL
1169++ C72C AF XOR A
1170++ C72D DD B6 0A OR (IX+CHP.COnOff)
1171++ C730 C8 RET Z
1172++ C731 DD 35 0A DEC (IX+CHP.COnOff)
1173++ C734 C0 RET NZ
1174++ C735 DD AE 15 XOR (IX+CHP.Flags)
1175++ C738 DD 77 15 LD (IX+CHP.Flags),A
1176++ C73B 1F RRA
1177++ C73C DD 7E 0B LD A,(IX+CHP.OnOffD)
1178++ C73F 38 03 JR C,CH_ONDL
1179++ C741 DD 7E 0C LD A,(IX+CHP.OffOnD)
1180++ C744 DD 77 0A CH_ONDL LD (IX+CHP.COnOff),A
1181++ C747 C9 RET
1182++ C748
1183++ C748 AF PLAY_ XOR A
1184++ C749 FD 77 12 LD (IY-100+VRS.AddToEn),A
1185++ C74C FD 77 1C LD (IY-100+VRS.AYREGS+Mixer),A
1186++ C74F 3D DEC A
1187++ C750 FD 77 22 LD (IY-100+VRS.AYREGS+EnvTp),A
1188++ C753 FD 35 09 DEC (IY-100+VRS.DelyCnt)
1189++ C756 C2 FB C7 JP NZ,PL2
1190++ C759 FD 35 BA DEC (IY-100+VRS.ChanA+CHP.NtSkCn)
1191++ C75C 20 69 JR NZ,PL1B
1192++ C75E FD 4E FE LD C,(IY-100+VRS.AdInPtA)
1193++ C761 FD 46 FF LD B,(IY-100+VRS.AdInPtA+1)
1194++ C764 0A LD A,(BC)
1195++ C765 A7 AND A
1196++ C766 20 53 JR NZ,PL1A
1197++ C768 57 LD D,A
1198++ C769 FD 77 10 LD (IY-100+VRS.Ns_Base),A
1199++ C76C FD 6E 04 LD L,(IY-100+VRS.CrPsPtr)
1200++ C76F FD 66 05 LD H,(IY-100+VRS.CrPsPtr+1)
1201++ C772 23 INC HL
1202++ C773 7E LD A,(HL)
1203++ C774 3C INC A
1204++ C775 20 08 JR NZ,PLNLP
1205++ C777
1206++ C777 IF LoopChecker
1207++ C777~ CALL CHECKLP
1208++ C777 ENDIF
1209++ C777
1210++ C777 FD 6E 06 LD L,(IY-100+VRS.LPosPtr)
1211++ C77A FD 66 07 LD H,(IY-100+VRS.LPosPtr+1)
1212++ C77D 7E LD A,(HL)
1213++ C77E 3C INC A
1214++ C77F CD D6 C2 PLNLP CALL SETCPPT
1215++ C782 3D DEC A
1216++ C783 FD CB 9E 4E BIT 1,(IY-100+VRS.ModNum)
1217++ C787 28 03 JR Z,NoAlCo
1218++ C789 TSSub EQU $+1
1219++ C789 D6 D6 SUB #D6
1220++ C78B 2F CPL
1221++ C78C NoAlCo
1222++ C78C ;PT2 PT3
1223++ C78C 3D PsCalc DEC A ;ADD A,A NOP
1224++ C78D 3D DEC A ;ADD A,(HL) NOP
1225++ C78E 87 ADD A,A
1226++ C78F 5F LD E,A
1227++ C790 CB 12 RL D
1228++ C792
1229++ C792 IF CurPosCounter
1230++ C792~ LD A,L
1231++ C792~ SUB (IY-100+VRS.PosSub)
1232++ C792~ LD (IY-100+VRS.CurPos),A
1233++ C792 ENDIF
1234++ C792
1235++ C792 FD 6E FC LD L,(IY-100+VRS.PatsPtr)
1236++ C795 FD 66 FD LD H,(IY-100+VRS.PatsPtr+1)
1237++ C798 19 ADD HL,DE
1238++ C799 FD 5E F6 LD E,(IY-100+VRS.MODADDR)
1239++ C79C FD 56 F7 LD D,(IY-100+VRS.MODADDR+1)
1240++ C79F ED 73 B9 C7 LD (PSP_+1),SP
1241++ C7A3 F9 LD SP,HL
1242++ C7A4 E1 POP HL
1243++ C7A5 19 ADD HL,DE
1244++ C7A6 44 LD B,H
1245++ C7A7 4D LD C,L
1246++ C7A8 E1 POP HL
1247++ C7A9 19 ADD HL,DE
1248++ C7AA FD 75 00 LD (IY-100+VRS.AdInPtB),L
1249++ C7AD FD 74 01 LD (IY-100+VRS.AdInPtB+1),H
1250++ C7B0 E1 POP HL
1251++ C7B1 19 ADD HL,DE
1252++ C7B2 FD 75 02 LD (IY-100+VRS.AdInPtC),L
1253++ C7B5 FD 74 03 LD (IY-100+VRS.AdInPtC+1),H
1254++ C7B8 31 31 31 PSP_ LD SP,#3131
1255++ C7BB 11 AB FF PL1A LD DE,VRS.ChanA+12-100
1256++ C7BE CD F9 C2 CALL PTDECOD
1257++ C7C1 FD 71 FE LD (IY-100+VRS.AdInPtA),C
1258++ C7C4 FD 70 FF LD (IY-100+VRS.AdInPtA+1),B
1259++ C7C7
1260++ C7C7 FD 35 D7 PL1B DEC (IY-100+VRS.ChanB+CHP.NtSkCn)
1261++ C7CA 20 12 JR NZ,PL1C
1262++ C7CC 11 C8 FF LD DE,VRS.ChanB+12-100
1263++ C7CF FD 4E 00 LD C,(IY-100+VRS.AdInPtB)
1264++ C7D2 FD 46 01 LD B,(IY-100+VRS.AdInPtB+1)
1265++ C7D5 CD F9 C2 CALL PTDECOD
1266++ C7D8 FD 71 00 LD (IY-100+VRS.AdInPtB),C
1267++ C7DB FD 70 01 LD (IY-100+VRS.AdInPtB+1),B
1268++ C7DE
1269++ C7DE FD 35 F4 PL1C DEC (IY-100+VRS.ChanC+CHP.NtSkCn)
1270++ C7E1 20 12 JR NZ,PL1D
1271++ C7E3 11 E5 FF LD DE,VRS.ChanC+12-100
1272++ C7E6 FD 4E 02 LD C,(IY-100+VRS.AdInPtC)
1273++ C7E9 FD 46 03 LD B,(IY-100+VRS.AdInPtC+1)
1274++ C7EC CD F9 C2 CALL PTDECOD
1275++ C7EF FD 71 02 LD (IY-100+VRS.AdInPtC),C
1276++ C7F2 FD 70 03 LD (IY-100+VRS.AdInPtC+1),B
1277++ C7F5
1278++ C7F5 FD 7E 08 PL1D LD A,(IY-100+VRS.Delay)
1279++ C7F8 FD 77 09 LD (IY-100+VRS.DelyCnt),A
1280++ C7FB
1281++ C7FB 11 9F FF PL2 LD DE,VRS.ChanA-100
1282++ C7FE FD 6E 15 LD L,(IY-100+VRS.AYREGS+TonA)
1283++ C801 FD 66 16 LD H,(IY-100+VRS.AYREGS+TonA+1)
1284++ C804 CD D1 C5 CALL CHREGS
1285++ C807 FD 75 15 LD (IY-100+VRS.AYREGS+TonA),L
1286++ C80A FD 74 16 LD (IY-100+VRS.AYREGS+TonA+1),H
1287++ C80D Ampl EQU $+1
1288++ C80D 3E 3E LD A,#3E
1289++ C80F FD 77 1D LD (IY-100+VRS.AYREGS+AmplA),A
1290++ C812 11 BC FF LD DE,VRS.ChanB-100
1291++ C815 FD 6E 17 LD L,(IY-100+VRS.AYREGS+TonB)
1292++ C818 FD 66 18 LD H,(IY-100+VRS.AYREGS+TonB+1)
1293++ C81B CD D1 C5 CALL CHREGS
1294++ C81E FD 75 17 LD (IY-100+VRS.AYREGS+TonB),L
1295++ C821 FD 74 18 LD (IY-100+VRS.AYREGS+TonB+1),H
1296++ C824 3A 0E C8 LD A,(Ampl)
1297++ C827 FD 77 1E LD (IY-100+VRS.AYREGS+AmplB),A
1298++ C82A 11 D9 FF LD DE,VRS.ChanC-100
1299++ C82D FD 6E 19 LD L,(IY-100+VRS.AYREGS+TonC)
1300++ C830 FD 66 1A LD H,(IY-100+VRS.AYREGS+TonC+1)
1301++ C833 CD D1 C5 CALL CHREGS
1302++ C836 FD 75 19 LD (IY-100+VRS.AYREGS+TonC),L
1303++ C839 FD 74 1A LD (IY-100+VRS.AYREGS+TonC+1),H
1304++ C83C 3A 0E C8 LD A,(Ampl)
1305++ C83F FD 77 1F LD (IY-100+VRS.AYREGS+AmplC),A
1306++ C842
1307++ C842 FD 7E 10 LD A,(IY-100+VRS.Ns_Base)
1308++ C845 FD 86 11 ADD (IY-100+VRS.AddToNs)
1309++ C848 FD 77 1B LD (IY-100+VRS.AYREGS+Noise),A
1310++ C84B
1311++ C84B FD 7E 12 LD A,(IY-100+VRS.AddToEn)
1312++ C84E 5F LD E,A
1313++ C84F 87 ADD A,A
1314++ C850 9F SBC A,A
1315++ C851 57 LD D,A
1316++ C852 FD 6E 13 LD L,(IY-100+VRS.EnvBase)
1317++ C855 FD 66 14 LD H,(IY-100+VRS.EnvBase+1)
1318++ C858 19 ADD HL,DE
1319++ C859 FD 5E 0C LD E,(IY-100+VRS.CurESld)
1320++ C85C FD 56 0D LD D,(IY-100+VRS.CurESld+1)
1321++ C85F 19 ADD HL,DE
1322++ C860 FD 75 20 LD (IY-100+VRS.AYREGS+Env),L
1323++ C863 FD 74 21 LD (IY-100+VRS.AYREGS+Env+1),H
1324++ C866
1325++ C866 AF XOR A
1326++ C867 FD B6 0F OR (IY-100+VRS.CurEDel)
1327++ C86A C8 RET Z
1328++ C86B FD 35 0F DEC (IY-100+VRS.CurEDel)
1329++ C86E C0 RET NZ
1330++ C86F FD 7E 0E LD A,(IY-100+VRS.Env_Del)
1331++ C872 FD 77 0F LD (IY-100+VRS.CurEDel),A
1332++ C875 FD 6E 0A LD L,(IY-100+VRS.ESldAdd)
1333++ C878 FD 66 0B LD H,(IY-100+VRS.ESldAdd+1)
1334++ C87B 19 ADD HL,DE
1335++ C87C C3 EB C2 JP SETESLD
1336++ C87F
1337++ C87F FD 21 B3 C9 PLAY LD IY,VARS1+100
1338++ C883 CD 48 C7 CALL PLAY_
1339++ C886 3A 4E C9 LD A,(is_ts)
1340++ C889 A7 AND A
1341++ C88A 28 07 JR Z,PL_nts
1342++ C88C FD 21 3A CA LD IY,VARS2+100
1343++ C890 CD 48 C7 CALL PLAY_
1344++ C893 PL_nts
1345++ C893 IF Basic
1346++ C893~ LD IY,#5C3A
1347++ C893 ENDIF
1348++ C893
1349++ C893 01 FD FF ROUT LD BC,#FFFD
1350++ C896 3A 4E C9 LD A,(is_ts)
1351++ C899 A7 AND A
1352++ C89A IFDEF ONtfm
1353++ C89A~ LD L,#F9
1354++ C89A~ OUT (C),L
1355++ C89A ELSE
1356++ C89A 28 02 JR Z,r_nts ;keep old standard
1357++ C89C ED 41 OUT (C),B
1358++ C89E ENDIF
1359++ C89E 08 r_nts EX AF,AF'
1360++ C89F
1361++ C89F IF ACBBAC
1362++ C89F~ LD IX,VARS1+VRS.AYREGS
1363++ C89F ELSE
1364++ C89F 21 C8 C9 LD HL,VARS1+VRS.AYREGS
1365++ C8A2 ENDIF
1366++ C8A2
1367++ C8A2 CD AE C8 CALL ROUT_
1368++ C8A5 08 EX AF,AF'
1369++ C8A6 C8 RET Z
1370++ C8A7 42 LD B,D
1371++ C8A8
1372++ C8A8 IFDEF ONtfm
1373++ C8A8~ LD A,#F8
1374++ C8A8 ELSE
1375++ C8A8 2F CPL
1376++ C8A9 ENDIF
1377++ C8A9 ED 79 OUT (C),A
1378++ C8AB
1379++ C8AB IF ACBBAC
1380++ C8AB~ LD IX,VARS2+VRS.AYREGS
1381++ C8AB ELSE
1382++ C8AB 21 4F CA LD HL,VARS2+VRS.AYREGS
1383++ C8AE ENDIF
1384++ C8AE
1385++ C8AE ROUT_
1386++ C8AE IF ACBBAC
1387++ C8AE~ LD A,(SETUP)
1388++ C8AE~ AND 12
1389++ C8AE~ JR Z,ABC
1390++ C8AE~ ADD A,CHTABLE
1391++ C8AE~ LD E,A
1392++ C8AE~ ADC A,CHTABLE/256
1393++ C8AE~ SUB E
1394++ C8AE~ LD D,A
1395++ C8AE~ LD B,0
1396++ C8AE~ PUSH IX
1397++ C8AE~ POP HL
1398++ C8AE~ LD A,(DE)
1399++ C8AE~ INC DE
1400++ C8AE~ LD C,A
1401++ C8AE~ ADD HL,BC
1402++ C8AE~ LD A,(IX+TonB)
1403++ C8AE~ LD C,(HL)
1404++ C8AE~ LD (IX+TonB),C
1405++ C8AE~ LD (HL),A
1406++ C8AE~ INC HL
1407++ C8AE~ LD A,(IX+TonB+1)
1408++ C8AE~ LD C,(HL)
1409++ C8AE~ LD (IX+TonB+1),C
1410++ C8AE~ LD (HL),A
1411++ C8AE~ LD A,(DE)
1412++ C8AE~ INC DE
1413++ C8AE~ LD C,A
1414++ C8AE~ ADD HL,BC
1415++ C8AE~ LD A,(IX+AmplB)
1416++ C8AE~ LD C,(HL)
1417++ C8AE~ LD (IX+AmplB),C
1418++ C8AE~ LD (HL),A
1419++ C8AE~ LD A,(DE)
1420++ C8AE~ INC DE
1421++ C8AE~ LD (RxCA1),A
1422++ C8AE~ XOR 8
1423++ C8AE~ LD (RxCA2),A
1424++ C8AE~ LD A,(DE)
1425++ C8AE~ AND (IX+Mixer)
1426++ C8AE~ LD E,A
1427++ C8AE~ LD A,(IX+Mixer)
1428++ C8AE~ RxCA1 DB #E6
1429++ C8AE~ AND %010010
1430++ C8AE~ OR E
1431++ C8AE~ LD E,A
1432++ C8AE~ LD A,(IX+Mixer)
1433++ C8AE~ AND %010010
1434++ C8AE~ RxCA2 OR E
1435++ C8AE~ OR E
1436++ C8AE~ LD (IX+Mixer),A
1437++ C8AE~ ABC
1438++ C8AE ENDIF
1439++ C8AE
1440++ C8AE AF XOR A
1441++ C8AF 11 BF FF LD DE,#FFBF
1442++ C8B2
1443++ C8B2 IF ACBBAC
1444++ C8B2~ LD BC,#FFFD
1445++ C8B2~ PUSH IX
1446++ C8B2~ POP HL
1447++ C8B2 ENDIF
1448++ C8B2
1449++ C8B2 LOUT
1450++ C8B2 IFDEF ONtfm
1451++ C8B2~ INF
1452++ C8B2~ JP M,$-2
1453++ C8B2 ENDIF
1454++ C8B2 ED 79 OUT (C),A
1455++ C8B4 IFDEF ONtfm
1456++ C8B4~ INF
1457++ C8B4~ JP M,$-2
1458++ C8B4 ENDIF
1459++ C8B4 43 LD B,E
1460++ C8B5 ED A3 OUTI
1461++ C8B7 42 LD B,D
1462++ C8B8 3C INC A
1463++ C8B9 FE 0D CP 13
1464++ C8BB 20 F5 JR NZ,LOUT
1465++ C8BD IFDEF ONtfm
1466++ C8BD~ INF
1467++ C8BD~ JP M,$-2
1468++ C8BD ENDIF
1469++ C8BD ED 79 OUT (C),A
1470++ C8BF 7E LD A,(HL)
1471++ C8C0 A7 AND A
1472++ C8C1 F8 RET M
1473++ C8C2 IFDEF ONtfm
1474++ C8C2~ INF
1475++ C8C2~ JP M,$-2
1476++ C8C2 ENDIF
1477++ C8C2 43 LD B,E
1478++ C8C3 ED 79 OUT (C),A
1479++ C8C5 C9 RET
1480++ C8C6
1481++ C8C6 IF ACBBAC
1482++ C8C6~ CHTABLE EQU $-4
1483++ C8C6~ DB 4,5,15,%001001,0,7,7,%100100
1484++ C8C6 ENDIF
1485++ C8C6
1486++ C8C6 64 NT_DATA DB (T_NEW_0-T1_)*2
1487++ C8C7 2A DB TCNEW_0-T_
1488++ C8C8 65 DB (T_OLD_0-T1_)*2+1
1489++ C8C9 00 DB TCOLD_0-T_
1490++ C8CA 01 DB (T_NEW_1-T1_)*2+1
1491++ C8CB 0C DB TCNEW_1-T_
1492++ C8CC 01 DB (T_OLD_1-T1_)*2+1
1493++ C8CD 0C DB TCOLD_1-T_
1494++ C8CE 94 DB (T_NEW_2-T1_)*2
1495++ C8CF 35 DB TCNEW_2-T_
1496++ C8D0 30 DB (T_OLD_2-T1_)*2
1497++ C8D1 0E DB TCOLD_2-T_
1498++ C8D2 60 DB (T_NEW_3-T1_)*2
1499++ C8D3 20 DB TCNEW_3-T_
1500++ C8D4 60 DB (T_OLD_3-T1_)*2
1501++ C8D5 21 DB TCOLD_3-T_
1502++ C8D6
1503++ C8D6 T_
1504++ C8D6
1505++ C8D6 TCOLD_0 DB #00+1,#04+1,#08+1,#0A+1,#0C+1,#0E+1,#12+1,#14+1
1505++ C8D6 0105090B0D0F1315
1506++ C8DE 19 25 3D 00 DB #18+1,#24+1,#3C+1,0
1507++ C8E2 5D 00 TCOLD_1 DB #5C+1,0
1508++ C8E4 TCOLD_2 DB #30+1,#36+1,#4C+1,#52+1,#5E+1,#70+1,#82,#8C,#9C
1508++ C8E4 31374D535F71828C9C
1509++ C8ED DB #9E,#A0,#A6,#A8,#AA,#AC,#AE,#AE,0
1509++ C8ED 9EA0A6A8AAACAEAE00
1510++ C8F6 57 TCNEW_3 DB #56+1
1511++ C8F7 TCOLD_3 DB #1E+1,#22+1,#24+1,#28+1,#2C+1,#2E+1,#32+1,#BE+1,0
1511++ C8F7 1F2325292D2F33BF00
1512++ C900 TCNEW_0 DB #1C+1,#20+1,#22+1,#26+1,#2A+1,#2C+1,#30+1,#54+1
1512++ C900 1D2123272B2D3155
1513++ C908 BD BF 00 DB #BC+1,#BE+1,0
1514++ C90B TCNEW_1 EQU TCOLD_1
1515++ C90B TCNEW_2 DB #1A+1,#20+1,#24+1,#28+1,#2A+1,#3A+1,#4C+1,#5E+1
1515++ C90B 1B2125292B3B4D5F
1516++ C913 BB BD BF 00 DB #BA+1,#BC+1,#BE+1,0
1517++ C917
1518++ C917 PT3EMPTYORN EQU $-1
1519++ C917 01 00 DB 1,0
1520++ C919
1521++ C919 ;first 12 values of tone tables (packed)
1522++ C919
1523++ C919 0D D8 T_PACK DB #06EC*2/256,#06EC*2&255
1524++ C91B 69 DB #0755-#06EC
1525++ C91C 70 DB #07C5-#0755
1526++ C91D 76 DB #083B-#07C5
1527++ C91E 7D DB #08B8-#083B
1528++ C91F 85 DB #093D-#08B8
1529++ C920 8D DB #09CA-#093D
1530++ C921 95 DB #0A5F-#09CA
1531++ C922 9D DB #0AFC-#0A5F
1532++ C923 A8 DB #0BA4-#0AFC
1533++ C924 B1 DB #0C55-#0BA4
1534++ C925 BB DB #0D10-#0C55
1535++ C926 0C DA DB #066D*2/256,#066D*2&255
1536++ C928 62 DB #06CF-#066D
1537++ C929 68 DB #0737-#06CF
1538++ C92A 6D DB #07A4-#0737
1539++ C92B 75 DB #0819-#07A4
1540++ C92C 7B DB #0894-#0819
1541++ C92D 83 DB #0917-#0894
1542++ C92E 8A DB #09A1-#0917
1543++ C92F 92 DB #0A33-#09A1
1544++ C930 9C DB #0ACF-#0A33
1545++ C931 A4 DB #0B73-#0ACF
1546++ C932 AF DB #0C22-#0B73
1547++ C933 B8 DB #0CDA-#0C22
1548++ C934 0E 08 DB #0704*2/256,#0704*2&255
1549++ C936 6A DB #076E-#0704
1550++ C937 72 DB #07E0-#076E
1551++ C938 78 DB #0858-#07E0
1552++ C939 7E DB #08D6-#0858
1553++ C93A 86 DB #095C-#08D6
1554++ C93B 90 DB #09EC-#095C
1555++ C93C 96 DB #0A82-#09EC
1556++ C93D A0 DB #0B22-#0A82
1557++ C93E AA DB #0BCC-#0B22
1558++ C93F B4 DB #0C80-#0BCC
1559++ C940 BE DB #0D3E-#0C80
1560++ C941 0F C0 DB #07E0*2/256,#07E0*2&255
1561++ C943 78 DB #0858-#07E0
1562++ C944 88 DB #08E0-#0858
1563++ C945 80 DB #0960-#08E0
1564++ C946 90 DB #09F0-#0960
1565++ C947 98 DB #0A88-#09F0
1566++ C948 A0 DB #0B28-#0A88
1567++ C949 B0 DB #0BD8-#0B28
1568++ C94A A8 DB #0C80-#0BD8
1569++ C94B E0 DB #0D60-#0C80
1570++ C94C B0 DB #0E10-#0D60
1571++ C94D E8 DB #0EF8-#0E10
1572++ C94E
1573++ C94E ;vars from here can be stripped
1574++ C94E ;you can move VARS to any other address
1575++ C94E
1576++ C94E VARS
1577++ C94E
1578++ C94E 00 is_ts DB 0
1579++ C94F
1580++ C94F ;ChannelsVars
1581++ C94F STRUCT CHP
1582++ C94F~ ;reset group
1583++ C94F~ PsInOr DB 0
1584++ C94F~ PsInSm DB 0
1585++ C94F~ CrAmSl DB 0
1586++ C94F~ CrNsSl DB 0
1587++ C94F~ CrEnSl DB 0
1588++ C94F~ TSlCnt DB 0
1589++ C94F~ CrTnSl DW 0
1590++ C94F~ TnAcc DW 0
1591++ C94F~ COnOff DB 0
1592++ C94F~ ;reset group
1593++ C94F~ 1594++ C94F~ OnOffD DB 0
1595++ C94F~ 1596++ C94F~ ;IX for PTDECOD here (+12)
1597++ C94F~ OffOnD DB 0
1598++ C94F~ OrnPtr DW 0
1599++ C94F~ SamPtr DW 0
1600++ C94F~ NNtSkp DB 0
1601++ C94F~ Note DB 0
1602++ C94F~ SlToNt DB 0
1603++ C94F~ Env_En DB 0
1604++ C94F~ Flags DB 0
1605++ C94F~ ;Enabled - 0, SimpleGliss - 2
1606++ C94F~ TnSlDl DB 0
1607++ C94F~ TSlStp DW 0
1608++ C94F~ TnDelt DW 0
1609++ C94F~ NtSkCn DB 0
1610++ C94F~ Volume DB 0
1611++ C94F ENDS
1612++ C94F
1613++ C94F STRUCT VRS
1614++ C94F~ 1615++ C94F~ ;IF not works in STRUCT in SjASM :(
1616++ C94F~ ; IF CurPosCounter
1617++ C94F~ CurPos DB 0
1618++ C94F~ PosSub DB 0
1619++ C94F~ ; ENDIF
1620++ C94F~ 1621++ C94F~ ModNum DB 0 ;bit0: ChipNum
1622++ C94F~ ;bit1: 1-reversed patterns order (AlCo TS)
1623++ C94F~ 1624++ C94F~ ChanA DS CHP
1625++ C94F~ ChanB DS CHP
1626++ C94F~ ChanC DS CHP
1627++ C94F~ 1628++ C94F~ ;GlobalVars
1629++ C94F~ MODADDR DW 0
1630++ C94F~ OrnPtrs DW 0
1631++ C94F~ SamPtrs DW 0
1632++ C94F~ PatsPtr DW 0
1633++ C94F~ AdInPtA DW 0
1634++ C94F~ AdInPtB DW 0
1635++ C94F~ AdInPtC DW 0
1636++ C94F~ CrPsPtr DW 0
1637++ C94F~ LPosPtr DW 0
1638++ C94F~ Delay DB 0
1639++ C94F~ DelyCnt DB 0
1640++ C94F~ ESldAdd DW 0
1641++ C94F~ CurESld DW 0
1642++ C94F~ Env_Del DB 0
1643++ C94F~ CurEDel DB 0
1644++ C94F~ Ns_Base DB 0
1645++ C94F~ AddToNs DB 0
1646++ C94F~ AddToEn DB 0
1647++ C94F~ EnvBase DW 0
1648++ C94F~ AYREGS DS 14
1649++ C94F ENDS
1650++ C94F
1651++ C94F 00 VARS1 DS VRS
1652++ C9D6 00 VARS2 DS VRS
1653++ CA5D
1654++ CA5D VT_ EQU $-16
1655++ CA5D 00 DS 256-16 ;CreatedVolumeTableAddress
1656++ CB4D
1657++ CB4D T1_ EQU VT_+16 ;Tone tables data depacked here
1658++ CB4D
1659++ CB4D T_OLD_1 EQU T1_
1660++ CB4D T_OLD_2 EQU T_OLD_1+24
1661++ CB4D T_OLD_3 EQU T_OLD_2+24
1662++ CB4D T_OLD_0 EQU T_OLD_3+2
1663++ CB4D T_NEW_0 EQU T_OLD_0
1664++ CB4D T_NEW_1 EQU T_OLD_1
1665++ CB4D T_NEW_2 EQU T_NEW_0+24
1666++ CB4D T_NEW_3 EQU T_OLD_3
1667++ CB4D
1668++ CB4D PT2EMPTYORN EQU VT_+31 ;1,0,0 sequence
1669++ CB4D
1670++ CB4D 00 NT_ DS 192 ;CreatedNoteTableAddress
1671++ CC0D
1672++ CC0D VAR0END EQU VT_+16 ;INIT zeroes from VARS to VAR0END-1
1673++ CC0D
1674++ CC0D VARSEND EQU $
1675++ CC0D MDLADDR EQU $
1676++ CC0D
1677++ CC0D DISPLAY "PTS player size=",$-START
1678++ CC0D
1679++ CC0D ;Release 0 steps:
1680++ CC0D ;04/21/2007
1681++ CC0D ;Works start (PTxPlay adaptation); first beta.
1682++ CC0D ;04/22/2007
1683++ CC0D ;Job finished; beta-testing.
1684++ CC0D ;04/23/2007
1685++ CC0D ;PT v3.7 TS mode corrected (after AlCo remarks).
1686++ CC0D ;04/29/2007
1687++ CC0D ;Added 1.XX and 2.XX special commands interpretation for PT3
1688++ CC0D ;modules of v3.7+.
1689++ CC0D
1690++ CC0D ;Size (minimal build for ZX Spectrum):
1691++ CC0D ;Code block #908 bytes
1692++ CC0D ;Variables #2BF bytes (can be stripped)
1693++ CC0D ;Total size #908+#2BF=#BC7 (3015) bytes
1694++ CC0D
1695++ CC0D ENDMOD
1696++ CC0D
1697++ CC0D endif
1698++ CC0D
0095+ CC0D
0096+ CC0D TS.End
0097+ CC0D TS.Play=PTS.PLAY
0098+ CC0D TS.Mute=PTS.MUTE
0099+ CC0D
0100+ CC0D display "TS module size: ",TS.End-TS.Start
0101+ CC0D
0102+ CC0D endif
0103+ CC0D
0013 CC0D
0014 CC0D module
0015 CC0D incbin TS_INEEDREST
0016 F5F5
0017 F5F5 savesna "test_ts.sna",begin
0018 F5F5 savebin "../ts_c000.bin",player,module-player
0019 F5F5
Value Label
------ - -----------------------------------------------------------
0x6000 begin
0xC000 init
0x600D begin.loop
0x6014 begin.delay
0xC005 play
0xC008 mute
0x602C X begin.fail
0xC000 player
0x0010 X TS.Footer
0x0000 X TS.Footer.Sign1
0x0004 X TS.Footer.Size1
0x0006 X TS.Footer.Sign2
0x000A X TS.Footer.Size2
0x000C X TS.Footer.Sign3
0xC000 TS.Start
0xCC0D TS.End
0xC00B TS.Start.init
0xC87F PTS.PLAY
0xC051 PTS.MUTE
0xC013 TS.CheckFormat
0xC00E X TS.Init
0x0010 PTS.SETUP.TS02
0xC063 PTS.INIT
0xC016 TS.CheckFormat.findfooter
0xC024 TS.CheckFooter
0x0030 X PTS.Release
0x0000 PTS.CurPosCounter
0x0000 PTS.ACBBAC
0x0000 PTS.LoopChecker
0x0000 PTS.Id
0x0000 PTS.Basic
0x0000 PTS.TonA
0x0002 PTS.TonB
0x0004 PTS.TonC
0x0006 PTS.Noise
0x0007 PTS.Mixer
0x0008 PTS.AmplA
0x0009 PTS.AmplB
0x000A PTS.AmplC
0x000B PTS.Env
0x000D PTS.EnvTp
0xC050 PTS.START
0x0001 X PTS.SETUP.NOLOOP
0x0002 PTS.SETUP.PT2
0x0004 X PTS.SETUP.ACB
0x0008 X PTS.SETUP.BAC
0x0020 PTS.SETUP.TSPT3
0xC050 PTS.SETUP
0xC94F PTS.VARS1
0x0079 PTS.VRS.AYREGS
0xC9D6 PTS.VARS2
0xC893 PTS.ROUT
0xC94E PTS.VARS
0xCA5D PTS.VAR0END
0x0062 PTS.VRS.AdInPtA
0xC10C PTS.I_PT2
0xC255 PTS.INITPT3
0xC649 PTS.e_
0xC628 PTS.SamCnv
0xC5F3 PTS.OrnCP
0xC61F PTS.SamCP
0xC5F6 PTS.OrnLD
0xC622 PTS.SamLD
0xC619 PTS.SamClc2
0xC0B0 PTS.L20
0xC0B2 PTS.L21
0xC4C6 PTS.Version
0xC101 PTS.NOTS
0xC0F5 PTS.TwoPT3s
0x0087 PTS.VRS
0x0002 PTS.VRS.ModNum
0xC78A PTS.TSSub
0xC0F8 PTS.AlCoTS_
0xC94E PTS.is_ts
0xC412 PTS.PT3PD
0xC916 PTS.PT3EMPTYORN
0xC154 PTS.INITCOMMON
0xC28D PTS.INITPT2
0xC14B PTS.NOTS2
0xC34C PTS.PT2PD
0xCA6C PTS.PT2EMPTYORN
0xC2FD PTS.PTDEC
0xC78C PTS.PsCalc
0xC919 PTS.T_PACK
0xCA5D PTS.T1_
0xC162 PTS.TP_0
0xC16E PTS.TP_1
0xC175 PTS.TP_2
0x006D PTS.VRS.DelyCnt
0x0003 PTS.VRS.ChanA
0x001B PTS.CHP.NtSkCn
0x0020 PTS.VRS.ChanB
0x003D PTS.VRS.ChanC
0x000D PTS.CHP.OrnPtr
0xC8C6 PTS.NT_DATA
0xC1E6 PTS.L3
0xC8D6 PTS.T_
0xCB4D PTS.NT_
0xC1D5 PTS.L1
0xC1E2 PTS.L2
0xC8E2 PTS.TCOLD_1
0xC207 PTS.CORR_1
0xC21C PTS.TC_EXIT
0xC215 PTS.CORR_2
0xC22B PTS.M1
0xC23C PTS.M2
0xCA4D PTS.VT_
0xC234 PTS.INITV2
0xC23B PTS.INITV1
0xC24F PTS.M3
0xC2C8 PTS.SETMDAD
0x006C PTS.VRS.Delay
0xC2D6 PTS.SETCPPT
0xC2DD PTS.SETLPPT
0xC2C1 PTS.SETPTPT
0xC2CF PTS.SETORPT
0xC286 PTS.SETSMPT
0x005E PTS.VRS.SamPtrs
0x0060 PTS.VRS.PatsPtr
0x005A PTS.VRS.MODADDR
0x005C PTS.VRS.OrnPtrs
0x0068 PTS.VRS.CrPsPtr
0x006A PTS.VRS.LPosPtr
0xC2E4 PTS.SETENBS
0x0077 PTS.VRS.EnvBase
0xC2EB PTS.SETESLD
0x0070 PTS.VRS.CurESld
0xC2F2 PTS.GETIX
0xC2F9 PTS.PTDECOD
0xC2FF PTS.PD2_SAM
0xC595 PTS.SETSAM
0xC34E PTS.PD2_LOOP
0xC304 PTS.PD2_EOff
0x0014 PTS.CHP.Env_En
0xC309 PTS.PD2_ENV
0xC31B PTS.PD2_ORN
0xC576 PTS.SETORN
0xC320 PTS.PD2_SKIP
0x0011 PTS.CHP.NNtSkp
0xC326 PTS.PD2_VOL
0x001C PTS.CHP.Volume
0xC32F PTS.PD2_DEL
0xC546 PTS.C_DELAY
0xC334 PTS.PD2_GLIS
0x0015 PTS.CHP.Flags
0x0016 PTS.CHP.TnSlDl
0x0005 PTS.CHP.TSlCnt
0x0017 PTS.CHP.TSlStp
0xC34D PTS.PD2_LP2
0xC393 PTS.PD2_REL
0xC398 PTS.PD2_NOTE
0xC475 PTS.PD_FIN
0xC383 PTS.PD2_PORT
0xC38E PTS.PD2_STOP
0x0003 PTS.CHP.CrNsSl
0xC3C4 PTS.PD2_EXIT
0x0012 PTS.CHP.Note
0xC4AE PTS.PrNote
0xC3C3 PTS.NOGLIS2
0xC3BF PTS.NOPORT2
0xC4D5 PTS.LoStep
0xC490 PTS.SETPORT
0x0001 PTS.CHP.PsInSm
0x0000 PTS.CHP.PsInOr
0x0006 PTS.CHP.CrTnSl
0xC3D3 PTS.PD_OrSm
0xC3DA PTS.PD_SAM_
0xC3DD PTS.PD_SAM
0xC421 PTS.PD_LOOP
0xC3E2 PTS.PD_VOL
0xC424 PTS.PD_LP2
0xC3EB PTS.PD_EOff
0xC3F3 PTS.PD_SorE
0xC3FD PTS.PD_ENV
0xC55B PTS.SETENV
0xC402 PTS.PD_ORN
0xC407 PTS.PD_ESAM
0xC4CB PTS.PrSlide
0xC456 PTS.PD_REL
0xC45C PTS.PD_NOTE
0xC451 PTS.PD_NOIS
0xC5B1 PTS.SPCCOMS
0x0074 PTS.VRS.Ns_Base
0xC464 PTS.PD_RES
0xC472 PTS.PDSP_
0xC47C PTS.C_PORTM
0x0013 PTS.CHP.SlToNt
0x0019 PTS.CHP.TnDelt
0xC4D4 PTS.OLDPRTM
0xC4DA PTS.NOSIG
0xC4E4 PTS.SET_STP
0x000A PTS.CHP.COnOff
0xC4F0 PTS.C_GLISS
0xC503 PTS.GL36
0xC50D PTS.C_SMPOS
0xC513 PTS.C_ORPOS
0xC519 PTS.C_VIBRT
0x000B PTS.CHP.OnOffD
0x000C PTS.CHP.OffOnD
0xC531 PTS.C_ENGLS
0x0072 PTS.VRS.Env_Del
0x0073 PTS.VRS.CurEDel
0x006E PTS.VRS.ESldAdd
0xC594 PTS.C_NOP
0x000F PTS.CHP.SamPtr
0xC5D1 PTS.CHREGS
0xC80E PTS.Ampl
0xC724 PTS.CH_EXIT
0xC66D PTS.CSP_
0xC5F7 PTS.CH_ORPS
0xC602 PTS.CH_NTP
0xC608 PTS.CH_NOK
0xC623 PTS.CH_SMPS
0x0008 PTS.CHP.TnAcc
0xC65A PTS.CH_NOAC
0xC6B5 PTS.CH_AMP
0xC6A0 PTS.CH_STPP
0x0002 PTS.CHP.CrAmSl
0xC6CF PTS.CH_NOAM
0xC6C7 PTS.CH_AMIN
0xC6CC PTS.CH_SVAM
0xC6D8 PTS.CH_APOS
0xC6DE PTS.CH_VOL
0xC6E9 X PTS.CH_ENV
0xC6F0 PTS.CH_NOEN
0xC712 PTS.NO_ENSL
0x0004 PTS.CHP.CrEnSl
0xC70A PTS.NO_ENAC
0x0076 PTS.VRS.AddToEn
0xC720 PTS.CH_MIX
0x0075 PTS.VRS.AddToNs
0xC744 PTS.CH_ONDL
0xC748 PTS.PLAY_
0xC7FB PTS.PL2
0xC7C7 PTS.PL1B
0xC7BB PTS.PL1A
0xC77F PTS.PLNLP
0xC78C PTS.NoAlCo
0xC7B8 PTS.PSP_
0x0064 PTS.VRS.AdInPtB
0x0066 PTS.VRS.AdInPtC
0xC7DE PTS.PL1C
0xC7F5 PTS.PL1D
0xC893 PTS.PL_nts
0xC89E PTS.r_nts
0xC8AE PTS.ROUT_
0xC8B2 PTS.LOUT
0xCA8F PTS.T_NEW_0
0xC900 PTS.TCNEW_0
0xCA8F PTS.T_OLD_0
0xC8D6 PTS.TCOLD_0
0xCA5D PTS.T_NEW_1
0xC8E2 PTS.TCNEW_1
0xCA5D PTS.T_OLD_1
0xCAA7 PTS.T_NEW_2
0xC90B PTS.TCNEW_2
0xCA75 PTS.T_OLD_2
0xC8E4 PTS.TCOLD_2
0xCA8D PTS.T_NEW_3
0xC8F6 PTS.TCNEW_3
0xCA8D PTS.T_OLD_3
0xC8F7 PTS.TCOLD_3
0x001D PTS.CHP
0x0000 X PTS.VRS.CurPos
0x0001 X PTS.VRS.PosSub
0xCC0D X PTS.VARSEND
0xCC0D X PTS.MDLADDR
0xC87F X TS.Play
0xC051 X TS.Mute
0xCC0D module