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

2154 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 "pt3.asm"
0001+ C000 ifndef _pt3_asm_defined
0002+ C000 define _pt3_asm_defined
0003+ C000
0004+ C000 module PT3
0005+ C000
0006+ C000 struct Header
0007+ C000~ Id ds 13 ; usually 'Protracker 3.'
0008+ C000~ Subversion
0009+ C000~ db 0
0010+ C000~ Description
0011+ C000~ ds 84 ; usually ' compilation of ' + Name[32] + ' by ' + Author[32]
0012+ C000~ Mode db 0
0013+ C000~ FreqTable
0014+ C000~ db 0 ;assume 0..04
0015+ C000~ Tempo db 0 ;01-ff
0016+ C000~ Length db 0
0017+ C000~ Loop db 0
0018+ C000~ Patterns
0019+ C000~ dw 0 ;? 00-01
0020+ C000~ Samples
0021+ C000~ ds 64 ;(? 00-bf}{32}
0022+ C000~ Ornaments
0023+ C000~ ds 32 ;(? 00-d9){16}
0024+ C000~ Positions
0025+ C000~ db 0 ;*3&00-fe
0026+ C000~ db 0 ;*3|ff
0027+ C000 ends
0028+ C000
0029+ C000 Start
0030+ C000 ifndef NoPrologue
0031+ C000 21 CD CB ld hl,End
0032+ C003 18 06 jr Init
0033+ C005 C3 3F C8 jp PTS.PLAY
0034+ C008 C3 11 C0 jp PTS.MUTE
0035+ C00B endif
0036+ C00B
0037+ C00B 3E 20 Init ld a,PTS.SETUP.TSPT3
0038+ C00D C3 23 C0 jp PTS.INIT
0039+ C010
0040+ C010 ifdef HaveFormatCheck
0041+ C010~ include "format.asm"
0042+ C010~
0043+ C010~ ;in HL - module addr
0044+ C010~ ;out Z - is pt3
0045+ C010~ CheckFormat
0046+ C010~ ; meta
0047+ C010~ AnyBytes Header.FreqTable
0048+ C010~ ;FreqTable
0049+ C010~ LessOrEqual 4
0050+ C010~ ;Tempo
0051+ C010~ Greater 1
0052+ C010~ ;Length
0053+ C010~ AnyByte
0054+ C010~ ;Loop
0055+ C010~ AnyByte
0056+ C010~ ;Patterns
0057+ C010~ AnyByte
0058+ C010~ LessOrEqual 1
0059+ C010~ ;Samples
0060+ C010~ ld b,(Header.Ornaments-Header.Samples)/2
0061+ C010~ .samples
0062+ C010~ AnyByte
0063+ C010~ LessOrEqual #bf
0064+ C010~ djnz .samples
0065+ C010~ ;Ornaments
0066+ C010~ ld b,(Header.Positions-Header.Ornaments)/2
0067+ C010~ .ornaments
0068+ C010~ AnyByte
0069+ C010~ LessOrEqual #d9
0070+ C010~ djnz .ornaments
0071+ C010~ ;Positions
0072+ C010~ ;255 at first position is denied
0073+ C010~ LessOrEqual 254
0074+ C010~ ld b,0
0075+ C010~ dec hl
0076+ C010~ .positions
0077+ C010~ ld a,(hl)
0078+ C010~ inc hl
0079+ C010~ cp 255
0080+ C010~ ret z ;finish
0081+ C010~ ;check is multiple of 3
0082+ C010~ .div3 and a
0083+ C010~ jr z,.posok
0084+ C010~ sub 3
0085+ C010~ ret c
0086+ C010~ jr nz,.div3
0087+ C010~ .posok djnz .positions
0088+ C010~ ;fall through
0089+ C010~ .fail ld a,h
0090+ C010~ and a ;reset Z
0091+ C010~ ret
0092+ C010~
0093+ C010~ display "PT3 checker size: ",$-CheckFormat
0094+ C010 endif
0095+ C010
0096+ C010 endmod
0097+ C010
0098+ C010 include "PTSPlay.asm"
0001++ C010 ifndef _pts_asm_defined
0002++ C010 define _pts_asm_defined
0003++ C010
0004++ C010 MODULE PTS
0005++ C010
0006++ C010 ;Universal PT2'n'PT3 Turbo Sound player for ZX Spectrum
0007++ C010 ;(c)2004-2007 S.V.Bulba <vorobey@mail.khstu.ru>
0008++ C010 ;Specially for AlCo
0009++ C010 ;http://bulba.untergrund.net/ (http://bulba.at.kz/)
0010++ C010
0011++ C010 ;Release number
0012++ C010 Release EQU "0"
0013++ C010
0014++ C010 ;Conditional assembly
0015++ C010 ;1) Current position counters at (Vars1+0) and (Vars2+0)
0016++ C010 CurPosCounter=0
0017++ C010 ;2) Allow channels allocation bits at (SETUP)
0018++ C010 ACBBAC=0
0019++ C010 ;3) Allow loop checking and disabling
0020++ C010 LoopChecker=0
0021++ C010 ;4) Insert official identificator
0022++ C010 Id=0
0023++ C010 ;5) Set IY for correct return to ZX Basic
0024++ C010 Basic=0
0025++ C010
0026++ C010 ;Features
0027++ C010 ;--------
0028++ C010 ;-Can be compiled at any address (i.e. no need rounding ORG
0029++ C010 ; address).
0030++ C010 ;-Variables (VARS) can be located at any address (not only after
0031++ C010 ; code block).
0032++ C010 ;-INIT subprogram checks PT3-module version and rightly
0033++ C010 ; generates both note and volume tables outside of code block
0034++ C010 ; (in VARS).
0035++ C010 ;-Two portamento (spc. command 3xxx) algorithms (depending of
0036++ C010 ; PT3 module version).
0037++ C010 ;-New 1.XX and 2.XX special command behaviour (only for PT v3.7
0038++ C010 ; and higher).
0039++ C010 ;-Any Tempo value are accepted (including Tempo=1 and Tempo=2).
0040++ C010 ;-TS modes: 2xPT3, 2xPT2 and PT v3.7 TS standard.
0041++ C010 ;-Fully compatible with Ay_Emul PT3 and PT2 players codes.
0042++ C010 ;-See also notes at the end of this source code.
0043++ C010
0044++ C010 ;Limitations
0045++ C010 ;-----------
0046++ C010 ;-Can run in RAM only (self-modified code is used).
0047++ C010 ;-PT2 position list must be end by #FF marker only.
0048++ C010
0049++ C010 ;Warning!!! PLAY subprogram can crash if no module are loaded
0050++ C010 ;into RAM or INIT subprogram was not called before.
0051++ C010
0052++ C010 ;Call MUTE or INIT one more time to mute sound after stopping
0053++ C010 ;playing
0054++ C010
0055++ C010 TonA EQU 0
0056++ C010 TonB EQU 2
0057++ C010 TonC EQU 4
0058++ C010 Noise EQU 6
0059++ C010 Mixer EQU 7
0060++ C010 AmplA EQU 8
0061++ C010 AmplB EQU 9
0062++ C010 AmplC EQU 10
0063++ C010 Env EQU 11
0064++ C010 EnvTp EQU 13
0065++ C010
0066++ C010 START
0067++ C010
0068++ C010 SETUP.NOLOOP EQU 1
0069++ C010 SETUP.PT2 EQU 2
0070++ C010 SETUP.ACB EQU 4
0071++ C010 SETUP.BAC EQU 8
0072++ C010 SETUP.TS02 EQU 16
0073++ C010 SETUP.TSPT3 EQU 32
0074++ C010
0075++ C010 00 SETUP DB 0 ;set bit0, if you want to play without looping
0076++ C011 ;(optional);
0077++ C011 ;set bit1 for PT2 and reset for PT3 before
0078++ C011 ;calling INIT;
0079++ C011 ;bits2-3: %00-ABC, %01-ACB, %10-BAC (optional);
0080++ C011 ;bits4-5: %00-no TS, %01-2 modules TS, %10-
0081++ C011 ;autodetect PT3 TS-format by AlCo (PT 3.7+);
0082++ C011 ;Remark: old PT3 TS-format by AlCo (PT 3.6) is not
0083++ C011 ;documented and must be converted to new standard.
0084++ C011 ;bit6 is set each time, when loop point of 2nd TS
0085++ C011 ;module is passed (optional).
0086++ C011 ;bit7 is set each time, when loop point of 1st TS
0087++ C011 ;or of single module is passed (optional).
0088++ C011
0089++ C011 ;Identifier
0090++ C011 IF Id
0091++ C011~ DB "=UniPT2/PT3/TS-Player r.",Release,"="
0092++ C011 ENDIF
0093++ C011
0094++ C011 IF LoopChecker
0095++ C011~ CHECKLP LD HL,SETUP
0096++ C011~ BIT 0,(IY-100+VRS.ModNum)
0097++ C011~ JR Z,CHL1
0098++ C011~ SET 6,(HL)
0099++ C011~ JR CHL2
0100++ C011~ CHL1 SET 7,(HL)
0101++ C011~ CHL2 BIT 0,(HL)
0102++ C011~ RET Z
0103++ C011~ POP HL
0104++ C011~ INC (IY-100+VRS.DelyCnt)
0105++ C011~ INC (IY-100+VRS.ChanA+CHP.NtSkCn)
0106++ C011~ XOR A
0107++ C011~ LD (IY-100+VRS.AYREGS+AmplA),A
0108++ C011~ LD (IY-100+VRS.AYREGS+AmplB),A
0109++ C011~ LD (IY-100+VRS.AYREGS+AmplC),A
0110++ C011~ RET
0111++ C011 ENDIF
0112++ C011
0113++ C011 AF MUTE XOR A
0114++ C012 67 LD H,A
0115++ C013 6F LD L,A
0116++ C014 32 90 C9 LD (VARS1+VRS.AYREGS+AmplA),A
0117++ C017 22 91 C9 LD (VARS1+VRS.AYREGS+AmplB),HL
0118++ C01A 32 17 CA LD (VARS2+VRS.AYREGS+AmplA),A
0119++ C01D 22 18 CA LD (VARS2+VRS.AYREGS+AmplB),HL
0120++ C020 C3 53 C8 JP ROUT
0121++ C023
0122++ C023 INIT
0123++ C023 ;HL - AddressOfModule
0124++ C023 ;DE - AddresOf2ndModule
0125++ C023 ;A - mode
0126++ C023 D5 PUSH DE
0127++ C024 E5 PUSH HL
0128++ C025 21 0E C9 LD HL,VARS
0129++ C028 36 00 LD (HL),0
0130++ C02A 11 0F C9 LD DE,VARS+1
0131++ C02D 01 0E 01 LD BC,VAR0END-VARS-1
0132++ C030 ED B0 LDIR
0133++ C032 23 INC HL
0134++ C033 22 71 C9 LD (VARS1+VRS.AdInPtA),HL ;ptr to zero
0135++ C036 22 F8 C9 LD (VARS2+VRS.AdInPtA),HL
0136++ C039
0137++ C039 E1 POP HL
0138++ C03A FD 21 73 C9 LD IY,VARS1+100
0139++ C03E 32 10 C0 LD (SETUP),A
0140++ C041 E6 02 AND SETUP.PT2
0141++ C043 C2 CC C0 JP NZ,I_PT2
0142++ C046
0143++ C046 CD 15 C2 CALL INITPT3
0144++ C049 21 18 1F LD HL,(e_-SamCnv-2)*256+#18
0145++ C04C 22 E8 C5 LD (SamCnv),HL
0146++ C04F 3E BA LD A,#BA
0147++ C051 32 B3 C5 LD (OrnCP),A
0148++ C054 32 DF C5 LD (SamCP),A
0149++ C057 3E 7B LD A,#7B
0150++ C059 32 B6 C5 LD (OrnLD),A
0151++ C05C 32 E2 C5 LD (SamLD),A
0152++ C05F 3E 87 LD A,#87
0153++ C061 32 D9 C5 LD (SamClc2),A
0154++ C064 E1 POP HL
0155++ C065 ;Use version and ton table of 1st module
0156++ C065 DD 7E A9 LD A,(IX+13-100) ;EXTRACT VERSION NUMBER
0157++ C068 D6 30 SUB #30
0158++ C06A 38 04 JR C,L20
0159++ C06C FE 0A CP 10
0160++ C06E 38 02 JR C,L21
0161++ C070 3E 06 L20 LD A,6
0162++ C072 32 86 C4 L21 LD (Version),A
0163++ C075 F5 PUSH AF ;VolTable version
0164++ C076 FE 04 CP 4
0165++ C078 DD 7E FF LD A,(IX+99-100) ;TONE TABLE NUMBER
0166++ C07B 17 RLA
0167++ C07C E6 07 AND 7
0168++ C07E F5 PUSH AF ;NoteTable number
0169++ C07F
0170++ C07F FD 21 FA C9 LD IY,VARS2+100
0171++ C083 3A 10 C0 LD A,(SETUP)
0172++ C086 E6 30 AND SETUP.TS02|SETUP.TSPT3
0173++ C088 28 37 JR Z,NOTS
0174++ C08A FE 10 CP SETUP.TS02
0175++ C08C 28 27 JR Z,TwoPT3s
0176++ C08E 3A 86 C4 LD A,(Version)
0177++ C091 FE 07 CP 7
0178++ C093 38 2C JR C,NOTS
0179++ C095 DD 7E FE LD A,(IX+98-100) ;ALCO TS MARKER
0180++ C098 FE 20 CP #20
0181++ C09A 28 25 JR Z,NOTS
0182++ C09C 21 0F C9 LD HL,VARS1
0183++ C09F 11 96 C9 LD DE,VARS2
0184++ C0A2 01 87 00 LD BC,VRS
0185++ C0A5 ED B0 LDIR
0186++ C0A7 FD CB 9E CE SET 1,(IY-100+VRS.ModNum)
0187++ C0AB 4F LD C,A
0188++ C0AC 87 ADD A,A
0189++ C0AD 81 ADD A,C
0190++ C0AE D6 02 SUB 2
0191++ C0B0 32 4A C7 LD (TSSub),A
0192++ C0B3 18 03 JR AlCoTS_
0193++ C0B5 CD 15 C2 TwoPT3s CALL INITPT3
0194++ C0B8 3E 01 AlCoTS_ LD A,1
0195++ C0BA 32 0E C9 LD (is_ts),A
0196++ C0BD FD CB 9E C6 SET 0,(IY-100+VRS.ModNum)
0197++ C0C1
0198++ C0C1 01 D2 C3 NOTS LD BC,PT3PD
0199++ C0C4 21 00 00 LD HL,0
0200++ C0C7 11 D6 C8 LD DE,PT3EMPTYORN
0201++ C0CA 18 48 JR INITCOMMON
0202++ C0CC
0203++ C0CC CD 4D C2 I_PT2 CALL INITPT2
0204++ C0CF 21 CB 51 LD HL,#51CB
0205++ C0D2 22 E8 C5 LD (SamCnv),HL
0206++ C0D5 3E BB LD A,#BB
0207++ C0D7 32 B3 C5 LD (OrnCP),A
0208++ C0DA 32 DF C5 LD (SamCP),A
0209++ C0DD 3E 7A LD A,#7A
0210++ C0DF 32 B6 C5 LD (OrnLD),A
0211++ C0E2 32 E2 C5 LD (SamLD),A
0212++ C0E5 3E 80 LD A,#80
0213++ C0E7 32 D9 C5 LD (SamClc2),A
0214++ C0EA E1 POP HL
0215++ C0EB 3E 05 LD A,5
0216++ C0ED 32 86 C4 LD (Version),A
0217++ C0F0 F5 PUSH AF
0218++ C0F1 3E 02 LD A,2
0219++ C0F3 F5 PUSH AF
0220++ C0F4
0221++ C0F4 3A 10 C0 LD A,(SETUP)
0222++ C0F7 E6 30 AND SETUP.TS02|SETUP.TSPT3
0223++ C0F9 28 10 JR Z,NOTS2
0224++ C0FB
0225++ C0FB FD 21 FA C9 LD IY,VARS2+100
0226++ C0FF 3E 01 LD A,1
0227++ C101 32 0E C9 LD (is_ts),A
0228++ C104 FD CB 9E C6 SET 0,(IY-100+VRS.ModNum)
0229++ C108 CD 4D C2 CALL INITPT2
0230++ C10B
0231++ C10B 01 0C C3 NOTS2 LD BC,PT2PD
0232++ C10E 21 87 86 LD HL,#8687
0233++ C111 11 2C CA LD DE,PT2EMPTYORN
0234++ C114
0235++ C114 INITCOMMON
0236++ C114
0237++ C114 IF Basic
0238++ C114~ LD IY,#5C3A
0239++ C114 ENDIF
0240++ C114
0241++ C114 ED 43 BD C2 LD (PTDEC),BC
0242++ C118 22 4C C7 LD (PsCalc),HL
0243++ C11B D5 PUSH DE
0244++ C11C
0245++ C11C ;note table data depacker
0246++ C11C ;(c) Ivan Roshin
0247++ C11C 11 D9 C8 LD DE,T_PACK
0248++ C11F 01 7E CA LD BC,T1_+(2*49)-1
0249++ C122 1A TP_0 LD A,(DE)
0250++ C123 13 INC DE
0251++ C124 FE 1E CP 15*2
0252++ C126 30 06 JR NC,TP_1
0253++ C128 67 LD H,A
0254++ C129 1A LD A,(DE)
0255++ C12A 6F LD L,A
0256++ C12B 13 INC DE
0257++ C12C 18 07 JR TP_2
0258++ C12E D5 TP_1 PUSH DE
0259++ C12F 16 00 LD D,0
0260++ C131 5F LD E,A
0261++ C132 19 ADD HL,DE
0262++ C133 19 ADD HL,DE
0263++ C134 D1 POP DE
0264++ C135 7C TP_2 LD A,H
0265++ C136 02 LD (BC),A
0266++ C137 0B DEC BC
0267++ C138 7D LD A,L
0268++ C139 02 LD (BC),A
0269++ C13A 0B DEC BC
0270++ C13B D6 F0 SUB (#F8*2)&255
0271++ C13D 20 E3 JR NZ,TP_0
0272++ C13F
0273++ C13F 3C INC A
0274++ C140 32 7C C9 LD (VARS1+VRS.DelyCnt),A
0275++ C143 32 03 CA LD (VARS2+VRS.DelyCnt),A
0276++ C146 21 01 F0 LD HL,#F001 ;H - CHP.Volume, L - CHP.NtSkCn
0277++ C149 22 2D C9 LD (VARS1+VRS.ChanA+CHP.NtSkCn),HL
0278++ C14C 22 4A C9 LD (VARS1+VRS.ChanB+CHP.NtSkCn),HL
0279++ C14F 22 67 C9 LD (VARS1+VRS.ChanC+CHP.NtSkCn),HL
0280++ C152 22 B4 C9 LD (VARS2+VRS.ChanA+CHP.NtSkCn),HL
0281++ C155 22 D1 C9 LD (VARS2+VRS.ChanB+CHP.NtSkCn),HL
0282++ C158 22 EE C9 LD (VARS2+VRS.ChanC+CHP.NtSkCn),HL
0283++ C15B E1 POP HL
0284++ C15C 22 1F C9 LD (VARS1+VRS.ChanA+CHP.OrnPtr),HL
0285++ C15F 22 3C C9 LD (VARS1+VRS.ChanB+CHP.OrnPtr),HL
0286++ C162 22 59 C9 LD (VARS1+VRS.ChanC+CHP.OrnPtr),HL
0287++ C165 22 A6 C9 LD (VARS2+VRS.ChanA+CHP.OrnPtr),HL
0288++ C168 22 C3 C9 LD (VARS2+VRS.ChanB+CHP.OrnPtr),HL
0289++ C16B 22 E0 C9 LD (VARS2+VRS.ChanC+CHP.OrnPtr),HL
0290++ C16E
0291++ C16E F1 POP AF
0292++ C16F
0293++ C16F ;NoteTableCreator (c) Ivan Roshin
0294++ C16F ;A - NoteTableNumber*2+VersionForNoteTable
0295++ C16F ;(xx1b - 3.xx..3.4r, xx0b - 3.4x..3.6x..VTII1.0)
0296++ C16F
0297++ C16F 21 86 C8 LD HL,NT_DATA
0298++ C172 16 00 LD D,0
0299++ C174 87 ADD A,A
0300++ C175 5F LD E,A
0301++ C176 19 ADD HL,DE
0302++ C177 5E LD E,(HL)
0303++ C178 23 INC HL
0304++ C179 CB 3B SRL E
0305++ C17B 9F SBC A,A
0306++ C17C E6 A7 AND #A7 ;#00 (NOP) or #A7 (AND A)
0307++ C17E 32 A6 C1 LD (L3),A
0308++ C181 EB EX DE,HL
0309++ C182 01 1D CA LD BC,T1_
0310++ C185 09 ADD HL,BC
0311++ C186
0312++ C186 1A LD A,(DE)
0313++ C187 C6 96 ADD A,T_&255
0314++ C189 4F LD C,A
0315++ C18A CE C8 ADC A,T_/256
0316++ C18C 91 SUB C
0317++ C18D 47 LD B,A
0318++ C18E C5 PUSH BC
0319++ C18F 11 0D CB LD DE,NT_
0320++ C192 D5 PUSH DE
0321++ C193
0322++ C193 06 0C LD B,12
0323++ C195 C5 L1 PUSH BC
0324++ C196 4E LD C,(HL)
0325++ C197 23 INC HL
0326++ C198 E5 PUSH HL
0327++ C199 46 LD B,(HL)
0328++ C19A
0329++ C19A D5 PUSH DE
0330++ C19B EB EX DE,HL
0331++ C19C 11 17 00 LD DE,23
0332++ C19F DD 26 08 LD IXH,8
0333++ C1A2
0334++ C1A2 CB 38 L2 SRL B
0335++ C1A4 CB 19 RR C
0336++ C1A6 19 L3 DB #19 ;AND A or NOP
0337++ C1A7 79 LD A,C
0338++ C1A8 8A ADC A,D ;=ADC 0
0339++ C1A9 77 LD (HL),A
0340++ C1AA 23 INC HL
0341++ C1AB 78 LD A,B
0342++ C1AC 8A ADC A,D
0343++ C1AD 77 LD (HL),A
0344++ C1AE 19 ADD HL,DE
0345++ C1AF DD 25 DEC IXH
0346++ C1B1 20 EF JR NZ,L2
0347++ C1B3
0348++ C1B3 D1 POP DE
0349++ C1B4 13 INC DE
0350++ C1B5 13 INC DE
0351++ C1B6 E1 POP HL
0352++ C1B7 23 INC HL
0353++ C1B8 C1 POP BC
0354++ C1B9 10 DA DJNZ L1
0355++ C1BB
0356++ C1BB E1 POP HL
0357++ C1BC D1 POP DE
0358++ C1BD
0359++ C1BD 7B LD A,E
0360++ C1BE FE A2 CP TCOLD_1&255
0361++ C1C0 20 05 JR NZ,CORR_1
0362++ C1C2 3E FD LD A,#FD
0363++ C1C4 32 3B CB LD (NT_+#2E),A
0364++ C1C7
0365++ C1C7 1A CORR_1 LD A,(DE)
0366++ C1C8 A7 AND A
0367++ C1C9 28 11 JR Z,TC_EXIT
0368++ C1CB 1F RRA
0369++ C1CC F5 PUSH AF
0370++ C1CD 87 ADD A,A
0371++ C1CE 4F LD C,A
0372++ C1CF 09 ADD HL,BC
0373++ C1D0 F1 POP AF
0374++ C1D1 30 02 JR NC,CORR_2
0375++ C1D3 35 DEC (HL)
0376++ C1D4 35 DEC (HL)
0377++ C1D5 34 CORR_2 INC (HL)
0378++ C1D6 A7 AND A
0379++ C1D7 ED 42 SBC HL,BC
0380++ C1D9 13 INC DE
0381++ C1DA 18 EB JR CORR_1
0382++ C1DC
0383++ C1DC TC_EXIT
0384++ C1DC
0385++ C1DC F1 POP AF
0386++ C1DD
0387++ C1DD ;VolTableCreator (c) Ivan Roshin
0388++ C1DD ;A - VersionForVolumeTable (0..4 - 3.xx..3.4x;
0389++ C1DD ;5.. - 2.x,3.5x..3.6x..VTII1.0)
0390++ C1DD
0391++ C1DD FE 05 CP 5
0392++ C1DF 21 11 00 LD HL,#11
0393++ C1E2 54 LD D,H
0394++ C1E3 5C LD E,H
0395++ C1E4 3E 17 LD A,#17
0396++ C1E6 30 03 JR NC,M1
0397++ C1E8 2D DEC L
0398++ C1E9 5D LD E,L
0399++ C1EA AF XOR A
0400++ C1EB 32 FC C1 M1 LD (M2),A
0401++ C1EE
0402++ C1EE DD 21 1D CA LD IX,VT_+16
0403++ C1F2
0404++ C1F2 0E 0F LD C,#F
0405++ C1F4 E5 INITV2 PUSH HL
0406++ C1F5
0407++ C1F5 19 ADD HL,DE
0408++ C1F6 EB EX DE,HL
0409++ C1F7 ED 62 SBC HL,HL
0410++ C1F9
0411++ C1F9 06 10 LD B,#10
0412++ C1FB 7D INITV1 LD A,L
0413++ C1FC 7D M2 DB #7D
0414++ C1FD 7C LD A,H
0415++ C1FE CE 00 ADC A,0
0416++ C200 DD 77 00 LD (IX),A
0417++ C203 DD 23 INC IX
0418++ C205 19 ADD HL,DE
0419++ C206 10 F3 DJNZ INITV1
0420++ C208
0421++ C208 E1 POP HL
0422++ C209 7B LD A,E
0423++ C20A FE 77 CP #77
0424++ C20C 20 01 JR NZ,M3
0425++ C20E 1C INC E
0426++ C20F 0D M3 DEC C
0427++ C210 20 E2 JR NZ,INITV2
0428++ C212
0429++ C212 C3 53 C8 JP ROUT
0430++ C215
0431++ C215 CD 88 C2 INITPT3 CALL SETMDAD
0432++ C218 E5 PUSH HL
0433++ C219 11 64 00 LD DE,100
0434++ C21C 19 ADD HL,DE
0435++ C21D 7E LD A,(HL)
0436++ C21E FD 77 08 LD (IY-100+VRS.Delay),A
0437++ C221 E5 PUSH HL
0438++ C222 DD E1 POP IX
0439++ C224 19 ADD HL,DE
0440++ C225 CD 96 C2 CALL SETCPPT
0441++ C228 DD 5E 02 LD E,(IX+102-100)
0442++ C22B 23 INC HL
0443++ C22C
0444++ C22C IF CurPosCounter
0445++ C22C~ LD (IY-100+VRS.PosSub),L
0446++ C22C ENDIF
0447++ C22C
0448++ C22C 19 ADD HL,DE
0449++ C22D CD 9D C2 CALL SETLPPT
0450++ C230 D1 POP DE
0451++ C231 DD 6E 03 LD L,(IX+103-100)
0452++ C234 DD 66 04 LD H,(IX+104-100)
0453++ C237 19 ADD HL,DE
0454++ C238 CD 81 C2 CALL SETPTPT
0455++ C23B 21 A9 00 LD HL,169
0456++ C23E 19 ADD HL,DE
0457++ C23F CD 8F C2 CALL SETORPT
0458++ C242 21 69 00 LD HL,105
0459++ C245 19 ADD HL,DE
0460++ C246
0461++ C246 FD 75 FA SETSMPT LD (IY-100+VRS.SamPtrs),L
0462++ C249 FD 74 FB LD (IY-100+VRS.SamPtrs+1),H
0463++ C24C C9 RET
0464++ C24D
0465++ C24D 7E INITPT2 LD A,(HL)
0466++ C24E FD 77 08 LD (IY-100+VRS.Delay),A
0467++ C251 E5 PUSH HL
0468++ C252 E5 PUSH HL
0469++ C253 E5 PUSH HL
0470++ C254 23 INC HL
0471++ C255 23 INC HL
0472++ C256 7E LD A,(HL)
0473++ C257 23 INC HL
0474++ C258 CD 46 C2 CALL SETSMPT
0475++ C25B 5E LD E,(HL)
0476++ C25C 23 INC HL
0477++ C25D 56 LD D,(HL)
0478++ C25E E1 POP HL
0479++ C25F A7 AND A
0480++ C260 ED 52 SBC HL,DE
0481++ C262 CD 88 C2 CALL SETMDAD
0482++ C265 E1 POP HL
0483++ C266 11 43 00 LD DE,67
0484++ C269 19 ADD HL,DE
0485++ C26A CD 8F C2 CALL SETORPT
0486++ C26D 1E 20 LD E,32
0487++ C26F 19 ADD HL,DE
0488++ C270 4E LD C,(HL)
0489++ C271 23 INC HL
0490++ C272 46 LD B,(HL)
0491++ C273 1E 1E LD E,30
0492++ C275 19 ADD HL,DE
0493++ C276 CD 96 C2 CALL SETCPPT
0494++ C279 5F LD E,A
0495++ C27A 23 INC HL
0496++ C27B
0497++ C27B IF CurPosCounter
0498++ C27B~ LD (IY-100+VRS.PosSub),L
0499++ C27B ENDIF
0500++ C27B
0501++ C27B 19 ADD HL,DE
0502++ C27C CD 9D C2 CALL SETLPPT
0503++ C27F E1 POP HL
0504++ C280 09 ADD HL,BC
0505++ C281
0506++ C281 FD 75 FC SETPTPT LD (IY-100+VRS.PatsPtr),L
0507++ C284 FD 74 FD LD (IY-100+VRS.PatsPtr+1),H
0508++ C287 C9 RET
0509++ C288
0510++ C288 FD 75 F6 SETMDAD LD (IY-100+VRS.MODADDR),L
0511++ C28B FD 74 F7 LD (IY-100+VRS.MODADDR+1),H
0512++ C28E C9 RET
0513++ C28F
0514++ C28F FD 75 F8 SETORPT LD (IY-100+VRS.OrnPtrs),L
0515++ C292 FD 74 F9 LD (IY-100+VRS.OrnPtrs+1),H
0516++ C295 C9 RET
0517++ C296
0518++ C296 FD 75 04 SETCPPT LD (IY-100+VRS.CrPsPtr),L
0519++ C299 FD 74 05 LD (IY-100+VRS.CrPsPtr+1),H
0520++ C29C C9 RET
0521++ C29D
0522++ C29D FD 75 06 SETLPPT LD (IY-100+VRS.LPosPtr),L
0523++ C2A0 FD 74 07 LD (IY-100+VRS.LPosPtr+1),H
0524++ C2A3 C9 RET
0525++ C2A4
0526++ C2A4 FD 75 13 SETENBS LD (IY-100+VRS.EnvBase),L
0527++ C2A7 FD 74 14 LD (IY-100+VRS.EnvBase+1),H
0528++ C2AA C9 RET
0529++ C2AB
0530++ C2AB FD 75 0C SETESLD LD (IY-100+VRS.CurESld),L
0531++ C2AE FD 74 0D LD (IY-100+VRS.CurESld+1),H
0532++ C2B1 C9 RET
0533++ C2B2
0534++ C2B2 FD E5 GETIX PUSH IY
0535++ C2B4 DD E1 POP IX
0536++ C2B6 DD 19 ADD IX,DE
0537++ C2B8 C9 RET
0538++ C2B9
0539++ C2B9 CD B2 C2 PTDECOD CALL GETIX
0540++ C2BC PTDEC EQU $+1
0541++ C2BC C3 C3 C3 JP #C3C3
0542++ C2BF
0543++ C2BF ;PT2 pattern decoder
0544++ C2BF CD 55 C5 PD2_SAM CALL SETSAM
0545++ C2C2 18 4A JR PD2_LOOP
0546++ C2C4
0547++ C2C4 DD 77 08 PD2_EOff LD (IX-12+CHP.Env_En),A
0548++ C2C7 18 45 JR PD2_LOOP
0549++ C2C9
0550++ C2C9 DD 36 08 10 PD2_ENV LD (IX-12+CHP.Env_En),16
0551++ C2CD FD 77 22 LD (IY-100+VRS.AYREGS+EnvTp),A
0552++ C2D0 0A LD A,(BC)
0553++ C2D1 03 INC BC
0554++ C2D2 6F LD L,A
0555++ C2D3 0A LD A,(BC)
0556++ C2D4 03 INC BC
0557++ C2D5 67 LD H,A
0558++ C2D6 CD A4 C2 CALL SETENBS
0559++ C2D9 18 33 JR PD2_LOOP
0560++ C2DB
0561++ C2DB CD 36 C5 PD2_ORN CALL SETORN
0562++ C2DE 18 2E JR PD2_LOOP
0563++ C2E0
0564++ C2E0 3C PD2_SKIP INC A
0565++ C2E1 DD 77 05 LD (IX-12+CHP.NNtSkp),A
0566++ C2E4 18 28 JR PD2_LOOP
0567++ C2E6
0568++ C2E6 0F PD2_VOL RRCA
0569++ C2E7 0F RRCA
0570++ C2E8 0F RRCA
0571++ C2E9 0F RRCA
0572++ C2EA DD 77 10 LD (IX-12+CHP.Volume),A
0573++ C2ED 18 1F JR PD2_LOOP
0574++ C2EF
0575++ C2EF CD 06 C5 PD2_DEL CALL C_DELAY
0576++ C2F2 18 1A JR PD2_LOOP
0577++ C2F4
0578++ C2F4 DD CB 09 D6 PD2_GLIS SET 2,(IX-12+CHP.Flags)
0579++ C2F8 3C INC A
0580++ C2F9 DD 77 0A LD (IX-12+CHP.TnSlDl),A
0581++ C2FC DD 77 F9 LD (IX-12+CHP.TSlCnt),A
0582++ C2FF 0A LD A,(BC)
0583++ C300 03 INC BC
0584++ C301 DD 77 0B LD (IX-12+CHP.TSlStp),A
0585++ C304 87 ADD A,A
0586++ C305 9F SBC A,A
0587++ C306 DD 77 0C LD (IX-12+CHP.TSlStp+1),A
0588++ C309 37 SCF
0589++ C30A 18 01 JR PD2_LP2
0590++ C30C
0591++ C30C A7 PT2PD AND A
0592++ C30D
0593++ C30D 08 PD2_LP2 EX AF,AF'
0594++ C30E
0595++ C30E 0A PD2_LOOP LD A,(BC)
0596++ C30F 03 INC BC
0597++ C310 C6 20 ADD A,#20
0598++ C312 28 3F JR Z,PD2_REL
0599++ C314 38 A9 JR C,PD2_SAM
0600++ C316 C6 60 ADD A,96
0601++ C318 38 3E JR C,PD2_NOTE
0602++ C31A 3C INC A
0603++ C31B 28 A7 JR Z,PD2_EOff
0604++ C31D C6 0F ADD A,15
0605++ C31F CA 35 C4 JP Z,PD_FIN
0606++ C322 38 A5 JR C,PD2_ENV
0607++ C324 C6 10 ADD A,#10
0608++ C326 38 B3 JR C,PD2_ORN
0609++ C328 C6 40 ADD A,#40
0610++ C32A 38 B4 JR C,PD2_SKIP
0611++ C32C C6 10 ADD A,#10
0612++ C32E 38 B6 JR C,PD2_VOL
0613++ C330 3C INC A
0614++ C331 28 BC JR Z,PD2_DEL
0615++ C333 3C INC A
0616++ C334 28 BE JR Z,PD2_GLIS
0617++ C336 3C INC A
0618++ C337 28 0A JR Z,PD2_PORT
0619++ C339 3C INC A
0620++ C33A 28 12 JR Z,PD2_STOP
0621++ C33C 0A LD A,(BC)
0622++ C33D 03 INC BC
0623++ C33E DD 77 F7 LD (IX-12+CHP.CrNsSl),A
0624++ C341 18 CB JR PD2_LOOP
0625++ C343
0626++ C343 DD CB 09 96 PD2_PORT RES 2,(IX-12+CHP.Flags)
0627++ C347 0A LD A,(BC)
0628++ C348 03 INC BC
0629++ C349 03 INC BC ;ignoring precalc delta to right sound
0630++ C34A 03 INC BC
0631++ C34B 37 SCF
0632++ C34C 18 BF JR PD2_LP2
0633++ C34E
0634++ C34E DD 77 F9 PD2_STOP LD (IX-12+CHP.TSlCnt),A
0635++ C351 18 BB JR PD2_LOOP
0636++ C353
0637++ C353 DD 77 09 PD2_REL LD (IX-12+CHP.Flags),A
0638++ C356 18 2C JR PD2_EXIT
0639++ C358
0640++ C358 6F PD2_NOTE LD L,A
0641++ C359 DD 7E 06 LD A,(IX-12+CHP.Note)
0642++ C35C 32 6F C4 LD (PrNote+1),A
0643++ C35F DD 75 06 LD (IX-12+CHP.Note),L
0644++ C362 AF XOR A
0645++ C363 DD 77 F9 LD (IX-12+CHP.TSlCnt),A
0646++ C366 DD CB 09 C6 SET 0,(IX-12+CHP.Flags)
0647++ C36A 08 EX AF,AF'
0648++ C36B 30 16 JR NC,NOGLIS2
0649++ C36D DD CB 09 56 BIT 2,(IX-12+CHP.Flags)
0650++ C371 20 0C JR NZ,NOPORT2
0651++ C373 32 95 C4 LD (LoStep),A
0652++ C376 87 ADD A,A
0653++ C377 9F SBC A,A
0654++ C378 08 EX AF,AF'
0655++ C379 67 LD H,A
0656++ C37A 6F LD L,A
0657++ C37B 3C INC A
0658++ C37C CD 50 C4 CALL SETPORT
0659++ C37F DD 36 F9 01 NOPORT2 LD (IX-12+CHP.TSlCnt),1
0660++ C383 AF NOGLIS2 XOR A
0661++ C384
0662++ C384
0663++ C384 DD 77 F5 PD2_EXIT LD (IX-12+CHP.PsInSm),A
0664++ C387 DD 77 F4 LD (IX-12+CHP.PsInOr),A
0665++ C38A DD 77 FA LD (IX-12+CHP.CrTnSl),A
0666++ C38D DD 77 FB LD (IX-12+CHP.CrTnSl+1),A
0667++ C390 C3 35 C4 JP PD_FIN
0668++ C393
0669++ C393 ;PT3 pattern decoder
0670++ C393 DD 36 08 00 PD_OrSm LD (IX-12+CHP.Env_En),0
0671++ C397 CD 36 C5 CALL SETORN
0672++ C39A 0A PD_SAM_ LD A,(BC)
0673++ C39B 03 INC BC
0674++ C39C 0F RRCA
0675++ C39D
0676++ C39D CD 55 C5 PD_SAM CALL SETSAM
0677++ C3A0 18 3F JR PD_LOOP
0678++ C3A2
0679++ C3A2 0F PD_VOL RRCA
0680++ C3A3 0F RRCA
0681++ C3A4 0F RRCA
0682++ C3A5 0F RRCA
0683++ C3A6 DD 77 10 LD (IX-12+CHP.Volume),A
0684++ C3A9 18 39 JR PD_LP2
0685++ C3AB
0686++ C3AB DD 77 08 PD_EOff LD (IX-12+CHP.Env_En),A
0687++ C3AE DD 77 F4 LD (IX-12+CHP.PsInOr),A
0688++ C3B1 18 31 JR PD_LP2
0689++ C3B3
0690++ C3B3 3D PD_SorE DEC A
0691++ C3B4 20 07 JR NZ,PD_ENV
0692++ C3B6 0A LD A,(BC)
0693++ C3B7 03 INC BC
0694++ C3B8 DD 77 05 LD (IX-12+CHP.NNtSkp),A
0695++ C3BB 18 27 JR PD_LP2
0696++ C3BD
0697++ C3BD CD 1B C5 PD_ENV CALL SETENV
0698++ C3C0 18 22 JR PD_LP2
0699++ C3C2
0700++ C3C2 CD 36 C5 PD_ORN CALL SETORN
0701++ C3C5 18 1A JR PD_LOOP
0702++ C3C7
0703++ C3C7 DD 77 08 PD_ESAM LD (IX-12+CHP.Env_En),A
0704++ C3CA DD 77 F4 LD (IX-12+CHP.PsInOr),A
0705++ C3CD C4 1B C5 CALL NZ,SETENV
0706++ C3D0 18 C8 JR PD_SAM_
0707++ C3D2
0708++ C3D2 DD 7E 06 PT3PD LD A,(IX-12+CHP.Note)
0709++ C3D5 32 6F C4 LD (PrNote+1),A
0710++ C3D8 DD 6E FA LD L,(IX-12+CHP.CrTnSl)
0711++ C3DB DD 66 FB LD H,(IX-12+CHP.CrTnSl+1)
0712++ C3DE 22 8C C4 LD (PrSlide+1),HL
0713++ C3E1
0714++ C3E1 11 10 20 PD_LOOP LD DE,#2010
0715++ C3E4 0A PD_LP2 LD A,(BC)
0716++ C3E5 03 INC BC
0717++ C3E6 83 ADD A,E
0718++ C3E7 38 AA JR C,PD_OrSm
0719++ C3E9 82 ADD A,D
0720++ C3EA 28 49 JR Z,PD_FIN
0721++ C3EC 38 AF JR C,PD_SAM
0722++ C3EE 83 ADD A,E
0723++ C3EF 28 25 JR Z,PD_REL
0724++ C3F1 38 AF JR C,PD_VOL
0725++ C3F3 83 ADD A,E
0726++ C3F4 28 B5 JR Z,PD_EOff
0727++ C3F6 38 BB JR C,PD_SorE
0728++ C3F8 C6 60 ADD A,96
0729++ C3FA 38 20 JR C,PD_NOTE
0730++ C3FC 83 ADD A,E
0731++ C3FD 38 C3 JR C,PD_ORN
0732++ C3FF 82 ADD A,D
0733++ C400 38 0F JR C,PD_NOIS
0734++ C402 83 ADD A,E
0735++ C403 38 C2 JR C,PD_ESAM
0736++ C405 87 ADD A,A
0737++ C406 5F LD E,A
0738++ C407 21 91 A4 LD HL,(SPCCOMS+#FF20-#2000)&65535
0739++ C40A 19 ADD HL,DE
0740++ C40B 5E LD E,(HL)
0741++ C40C 23 INC HL
0742++ C40D 56 LD D,(HL)
0743++ C40E D5 PUSH DE
0744++ C40F 18 D0 JR PD_LOOP
0745++ C411
0746++ C411 FD 77 10 PD_NOIS LD (IY-100+VRS.Ns_Base),A
0747++ C414 18 CE JR PD_LP2
0748++ C416
0749++ C416 DD CB 09 86 PD_REL RES 0,(IX-12+CHP.Flags)
0750++ C41A 18 08 JR PD_RES
0751++ C41C
0752++ C41C DD 77 06 PD_NOTE LD (IX-12+CHP.Note),A
0753++ C41F DD CB 09 C6 SET 0,(IX-12+CHP.Flags)
0754++ C423 AF XOR A
0755++ C424
0756++ C424 ED 73 33 C4 PD_RES LD (PDSP_+1),SP
0757++ C428 DD F9 LD SP,IX
0758++ C42A 67 LD H,A
0759++ C42B 6F LD L,A
0760++ C42C E5 PUSH HL
0761++ C42D E5 PUSH HL
0762++ C42E E5 PUSH HL
0763++ C42F E5 PUSH HL
0764++ C430 E5 PUSH HL
0765++ C431 E5 PUSH HL
0766++ C432 31 31 31 PDSP_ LD SP,#3131
0767++ C435
0768++ C435 DD 7E 05 PD_FIN LD A,(IX-12+CHP.NNtSkp)
0769++ C438 DD 77 0F LD (IX-12+CHP.NtSkCn),A
0770++ C43B C9 RET
0771++ C43C
0772++ C43C 0A C_PORTM LD A,(BC)
0773++ C43D 03 INC BC
0774++ C43E ;SKIP PRECALCULATED TONE DELTA (BECAUSE
0775++ C43E ;CANNOT BE RIGHT AFTER PT3 COMPILATION)
0776++ C43E 03 INC BC
0777++ C43F 03 INC BC
0778++ C440 08 EX AF,AF'
0779++ C441 0A LD A,(BC) ;SIGNED TONE STEP
0780++ C442 03 INC BC
0781++ C443 32 95 C4 LD (LoStep),A
0782++ C446 0A LD A,(BC)
0783++ C447 03 INC BC
0784++ C448 A7 AND A
0785++ C449 08 EX AF,AF'
0786++ C44A DD 6E FA LD L,(IX-12+CHP.CrTnSl)
0787++ C44D DD 66 FB LD H,(IX-12+CHP.CrTnSl+1)
0788++ C450
0789++ C450 ;Set portamento variables
0790++ C450 ;A - Delay; A' - Hi(Step); ZF' - (A'=0); HL - CrTnSl
0791++ C450
0792++ C450 DD CB 09 96 SETPORT RES 2,(IX-12+CHP.Flags)
0793++ C454 DD 77 0A LD (IX-12+CHP.TnSlDl),A
0794++ C457 DD 77 F9 LD (IX-12+CHP.TSlCnt),A
0795++ C45A E5 PUSH HL
0796++ C45B 11 0D CB LD DE,NT_
0797++ C45E DD 7E 06 LD A,(IX-12+CHP.Note)
0798++ C461 DD 77 07 LD (IX-12+CHP.SlToNt),A
0799++ C464 87 ADD A,A
0800++ C465 6F LD L,A
0801++ C466 26 00 LD H,0
0802++ C468 19 ADD HL,DE
0803++ C469 7E LD A,(HL)
0804++ C46A 23 INC HL
0805++ C46B 66 LD H,(HL)
0806++ C46C 6F LD L,A
0807++ C46D E5 PUSH HL
0808++ C46E 3E 3E PrNote LD A,#3E
0809++ C470 DD 77 06 LD (IX-12+CHP.Note),A
0810++ C473 87 ADD A,A
0811++ C474 6F LD L,A
0812++ C475 26 00 LD H,0
0813++ C477 19 ADD HL,DE
0814++ C478 5E LD E,(HL)
0815++ C479 23 INC HL
0816++ C47A 56 LD D,(HL)
0817++ C47B E1 POP HL
0818++ C47C ED 52 SBC HL,DE
0819++ C47E DD 75 0D LD (IX-12+CHP.TnDelt),L
0820++ C481 DD 74 0E LD (IX-12+CHP.TnDelt+1),H
0821++ C484 D1 POP DE
0822++ C485 Version EQU $+1
0823++ C485 3E 3E LD A,#3E
0824++ C487 FE 06 CP 6
0825++ C489 38 09 JR C,OLDPRTM ;Old 3xxx for PT v3.5-
0826++ C48B 11 11 11 PrSlide LD DE,#1111
0827++ C48E DD 73 FA LD (IX-12+CHP.CrTnSl),E
0828++ C491 DD 72 FB LD (IX-12+CHP.CrTnSl+1),D
0829++ C494 LoStep EQU $+1
0830++ C494 3E 3E OLDPRTM LD A,#3E
0831++ C496 08 EX AF,AF'
0832++ C497 28 01 JR Z,NOSIG
0833++ C499 EB EX DE,HL
0834++ C49A ED 52 NOSIG SBC HL,DE
0835++ C49C F2 A4 C4 JP P,SET_STP
0836++ C49F 2F CPL
0837++ C4A0 08 EX AF,AF'
0838++ C4A1 ED 44 NEG
0839++ C4A3 08 EX AF,AF'
0840++ C4A4 DD 77 0C SET_STP LD (IX-12+CHP.TSlStp+1),A
0841++ C4A7 08 EX AF,AF'
0842++ C4A8 DD 77 0B LD (IX-12+CHP.TSlStp),A
0843++ C4AB DD 36 FE 00 LD (IX-12+CHP.COnOff),0
0844++ C4AF C9 RET
0845++ C4B0
0846++ C4B0 DD CB 09 D6 C_GLISS SET 2,(IX-12+CHP.Flags)
0847++ C4B4 0A LD A,(BC)
0848++ C4B5 03 INC BC
0849++ C4B6 DD 77 0A LD (IX-12+CHP.TnSlDl),A
0850++ C4B9 A7 AND A
0851++ C4BA 20 07 JR NZ,GL36
0852++ C4BC 3A 86 C4 LD A,(Version) ;AlCo PT3.7+
0853++ C4BF FE 07 CP 7
0854++ C4C1 9F SBC A,A
0855++ C4C2 3C INC A
0856++ C4C3 DD 77 F9 GL36 LD (IX-12+CHP.TSlCnt),A
0857++ C4C6 0A LD A,(BC)
0858++ C4C7 03 INC BC
0859++ C4C8 08 EX AF,AF'
0860++ C4C9 0A LD A,(BC)
0861++ C4CA 03 INC BC
0862++ C4CB 18 D7 JR SET_STP
0863++ C4CD
0864++ C4CD 0A C_SMPOS LD A,(BC)
0865++ C4CE 03 INC BC
0866++ C4CF DD 77 F5 LD (IX-12+CHP.PsInSm),A
0867++ C4D2 C9 RET
0868++ C4D3
0869++ C4D3 0A C_ORPOS LD A,(BC)
0870++ C4D4 03 INC BC
0871++ C4D5 DD 77 F4 LD (IX-12+CHP.PsInOr),A
0872++ C4D8 C9 RET
0873++ C4D9
0874++ C4D9 0A C_VIBRT LD A,(BC)
0875++ C4DA 03 INC BC
0876++ C4DB DD 77 FF LD (IX-12+CHP.OnOffD),A
0877++ C4DE DD 77 FE LD (IX-12+CHP.COnOff),A
0878++ C4E1 0A LD A,(BC)
0879++ C4E2 03 INC BC
0880++ C4E3 DD 77 00 LD (IX-12+CHP.OffOnD),A
0881++ C4E6 AF XOR A
0882++ C4E7 DD 77 F9 LD (IX-12+CHP.TSlCnt),A
0883++ C4EA DD 77 FA LD (IX-12+CHP.CrTnSl),A
0884++ C4ED DD 77 FB LD (IX-12+CHP.CrTnSl+1),A
0885++ C4F0 C9 RET
0886++ C4F1
0887++ C4F1 0A C_ENGLS LD A,(BC)
0888++ C4F2 03 INC BC
0889++ C4F3 FD 77 0E LD (IY-100+VRS.Env_Del),A
0890++ C4F6 FD 77 0F LD (IY-100+VRS.CurEDel),A
0891++ C4F9 0A LD A,(BC)
0892++ C4FA 03 INC BC
0893++ C4FB 6F LD L,A
0894++ C4FC 0A LD A,(BC)
0895++ C4FD 03 INC BC
0896++ C4FE 67 LD H,A
0897++ C4FF FD 75 0A LD (IY-100+VRS.ESldAdd),L
0898++ C502 FD 74 0B LD (IY-100+VRS.ESldAdd+1),H
0899++ C505 C9 RET
0900++ C506
0901++ C506 0A C_DELAY LD A,(BC)
0902++ C507 03 INC BC
0903++ C508 FD 77 08 LD (IY-100+VRS.Delay),A
0904++ C50B 21 98 C9 LD HL,VARS2+VRS.ModNum ;if AlCo_TS
0905++ C50E CB 4E BIT 1,(HL)
0906++ C510 C8 RET Z
0907++ C511 32 7B C9 LD (VARS1+VRS.Delay),A
0908++ C514 32 7C C9 LD (VARS1+VRS.DelyCnt),A
0909++ C517 32 02 CA LD (VARS2+VRS.Delay),A
0910++ C51A C9 RET
0911++ C51B
0912++ C51B DD 73 08 SETENV LD (IX-12+CHP.Env_En),E
0913++ C51E FD 77 22 LD (IY-100+VRS.AYREGS+EnvTp),A
0914++ C521 0A LD A,(BC)
0915++ C522 03 INC BC
0916++ C523 67 LD H,A
0917++ C524 0A LD A,(BC)
0918++ C525 03 INC BC
0919++ C526 6F LD L,A
0920++ C527 CD A4 C2 CALL SETENBS
0921++ C52A AF XOR A
0922++ C52B DD 77 F4 LD (IX-12+CHP.PsInOr),A
0923++ C52E FD 77 0F LD (IY-100+VRS.CurEDel),A
0924++ C531 67 LD H,A
0925++ C532 6F LD L,A
0926++ C533 C3 AB C2 JP SETESLD
0927++ C536
0928++ C536 87 SETORN ADD A,A
0929++ C537 5F LD E,A
0930++ C538 16 00 LD D,0
0931++ C53A DD 72 F4 LD (IX-12+CHP.PsInOr),D
0932++ C53D FD 6E F8 LD L,(IY-100+VRS.OrnPtrs)
0933++ C540 FD 66 F9 LD H,(IY-100+VRS.OrnPtrs+1)
0934++ C543 19 ADD HL,DE
0935++ C544 5E LD E,(HL)
0936++ C545 23 INC HL
0937++ C546 56 LD D,(HL)
0938++ C547 FD 6E F6 LD L,(IY-100+VRS.MODADDR)
0939++ C54A FD 66 F7 LD H,(IY-100+VRS.MODADDR+1)
0940++ C54D 19 ADD HL,DE
0941++ C54E DD 75 01 LD (IX-12+CHP.OrnPtr),L
0942++ C551 DD 74 02 LD (IX-12+CHP.OrnPtr+1),H
0943++ C554 C9 C_NOP RET
0944++ C555
0945++ C555 87 SETSAM ADD A,A
0946++ C556 5F LD E,A
0947++ C557 16 00 LD D,0
0948++ C559 FD 6E FA LD L,(IY-100+VRS.SamPtrs);
0949++ C55C FD 66 FB LD H,(IY-100+VRS.SamPtrs+1);
0950++ C55F 19 ADD HL,DE
0951++ C560 5E LD E,(HL)
0952++ C561 23 INC HL
0953++ C562 56 LD D,(HL)
0954++ C563 FD 6E F6 LD L,(IY-100+VRS.MODADDR)
0955++ C566 FD 66 F7 LD H,(IY-100+VRS.MODADDR+1)
0956++ C569 19 ADD HL,DE
0957++ C56A DD 75 03 LD (IX-12+CHP.SamPtr),L
0958++ C56D DD 74 04 LD (IX-12+CHP.SamPtr+1),H
0959++ C570 C9 RET
0960++ C571
0961++ C571 ;ALL 16 ADDRESSES TO PROTECT FROM BROKEN PT3 MODULES
0962++ C571 54 C5 SPCCOMS DW C_NOP
0963++ C573 B0 C4 DW C_GLISS
0964++ C575 3C C4 DW C_PORTM
0965++ C577 CD C4 DW C_SMPOS
0966++ C579 D3 C4 DW C_ORPOS
0967++ C57B D9 C4 DW C_VIBRT
0968++ C57D 54 C5 DW C_NOP
0969++ C57F 54 C5 DW C_NOP
0970++ C581 F1 C4 DW C_ENGLS
0971++ C583 06 C5 DW C_DELAY
0972++ C585 54 C5 DW C_NOP
0973++ C587 54 C5 DW C_NOP
0974++ C589 54 C5 DW C_NOP
0975++ C58B 54 C5 DW C_NOP
0976++ C58D 54 C5 DW C_NOP
0977++ C58F 54 C5 DW C_NOP
0978++ C591
0979++ C591 CD B2 C2 CHREGS CALL GETIX
0980++ C594 AF XOR A
0981++ C595 32 CE C7 LD (Ampl),A
0982++ C598 DD CB 15 46 BIT 0,(IX+CHP.Flags)
0983++ C59C E5 PUSH HL
0984++ C59D CA E4 C6 JP Z,CH_EXIT
0985++ C5A0 ED 73 2E C6 LD (CSP_+1),SP
0986++ C5A4 DD 6E 0D LD L,(IX+CHP.OrnPtr)
0987++ C5A7 DD 66 0E LD H,(IX+CHP.OrnPtr+1)
0988++ C5AA F9 LD SP,HL
0989++ C5AB D1 POP DE
0990++ C5AC 67 LD H,A
0991++ C5AD DD 7E 00 LD A,(IX+CHP.PsInOr)
0992++ C5B0 6F LD L,A
0993++ C5B1 39 ADD HL,SP
0994++ C5B2 3C INC A
0995++ C5B3 ;PT2 PT3
0996++ C5B3 3C OrnCP INC A ;CP E CP D
0997++ C5B4 38 01 JR C,CH_ORPS
0998++ C5B6 01 OrnLD DB 1 ;LD A,D LD A,E
0999++ C5B7 DD 77 00 CH_ORPS LD (IX+CHP.PsInOr),A
1000++ C5BA DD 7E 12 LD A,(IX+CHP.Note)
1001++ C5BD 86 ADD A,(HL)
1002++ C5BE F2 C2 C5 JP P,CH_NTP
1003++ C5C1 AF XOR A
1004++ C5C2 FE 60 CH_NTP CP 96
1005++ C5C4 38 02 JR C,CH_NOK
1006++ C5C6 3E 5F LD A,95
1007++ C5C8 87 CH_NOK ADD A,A
1008++ C5C9 08 EX AF,AF'
1009++ C5CA DD 6E 0F LD L,(IX+CHP.SamPtr)
1010++ C5CD DD 66 10 LD H,(IX+CHP.SamPtr+1)
1011++ C5D0 F9 LD SP,HL
1012++ C5D1 D1 POP DE
1013++ C5D2 26 00 LD H,0
1014++ C5D4 DD 7E 01 LD A,(IX+CHP.PsInSm)
1015++ C5D7 47 LD B,A
1016++ C5D8 87 ADD A,A
1017++ C5D9 87 SamClc2 ADD A,A ;or ADD A,B for PT2
1018++ C5DA 6F LD L,A
1019++ C5DB 39 ADD HL,SP
1020++ C5DC F9 LD SP,HL
1021++ C5DD 78 LD A,B
1022++ C5DE 3C INC A
1023++ C5DF ;PT2 PT3
1024++ C5DF 3C SamCP INC A ;CP E CP D
1025++ C5E0 38 01 JR C,CH_SMPS
1026++ C5E2 01 SamLD DB 1 ;LD A,D LD A,E
1027++ C5E3 DD 77 01 CH_SMPS LD (IX+CHP.PsInSm),A
1028++ C5E6 C1 POP BC
1029++ C5E7 E1 POP HL
1030++ C5E8
1031++ C5E8 ;Convert PT2 sample to PT3
1032++ C5E8 ;PT2 PT3
1033++ C5E8 E1 SamCnv POP HL ;BIT 2,C JR e_
1034++ C5E9 E1 POP HL
1035++ C5EA 60 LD H,B
1036++ C5EB 20 06 JR NZ,$+8
1037++ C5ED EB EX DE,HL
1038++ C5EE A7 AND A
1039++ C5EF ED 62 SBC HL,HL
1040++ C5F1 ED 52 SBC HL,DE
1041++ C5F3 51 LD D,C
1042++ C5F4 CB 19 RR C
1043++ C5F6 9F SBC A,A
1044++ C5F7 2F CPL
1045++ C5F8 E6 3E AND #3E
1046++ C5FA CB 19 RR C
1047++ C5FC CB 18 RR B
1048++ C5FE A1 AND C
1049++ C5FF 4F LD C,A
1050++ C600 78 LD A,B
1051++ C601 1F RRA
1052++ C602 1F RRA
1053++ C603 CB 1A RR D
1054++ C605 1F RRA
1055++ C606 E6 9F AND #9F
1056++ C608 47 LD B,A
1057++ C609
1058++ C609 DD 5E 08 e_ LD E,(IX+CHP.TnAcc)
1059++ C60C DD 56 09 LD D,(IX+CHP.TnAcc+1)
1060++ C60F 19 ADD HL,DE
1061++ C610 CB 70 BIT 6,B
1062++ C612 28 06 JR Z,CH_NOAC
1063++ C614 DD 75 08 LD (IX+CHP.TnAcc),L
1064++ C617 DD 74 09 LD (IX+CHP.TnAcc+1),H
1065++ C61A EB CH_NOAC EX DE,HL
1066++ C61B 08 EX AF,AF'
1067++ C61C C6 0D ADD A,NT_&255
1068++ C61E 6F LD L,A
1069++ C61F CE CB ADC A,NT_/256
1070++ C621 95 SUB L
1071++ C622 67 LD H,A
1072++ C623 F9 LD SP,HL
1073++ C624 E1 POP HL
1074++ C625 19 ADD HL,DE
1075++ C626 DD 5E 06 LD E,(IX+CHP.CrTnSl)
1076++ C629 DD 56 07 LD D,(IX+CHP.CrTnSl+1)
1077++ C62C 19 ADD HL,DE
1078++ C62D 31 31 31 CSP_ LD SP,#3131
1079++ C630 E3 EX (SP),HL
1080++ C631 AF XOR A
1081++ C632 DD B6 05 OR (IX+CHP.TSlCnt)
1082++ C635 28 3E JR Z,CH_AMP
1083++ C637 DD 35 05 DEC (IX+CHP.TSlCnt)
1084++ C63A 20 39 JR NZ,CH_AMP
1085++ C63C DD 7E 16 LD A,(IX+CHP.TnSlDl)
1086++ C63F DD 77 05 LD (IX+CHP.TSlCnt),A
1087++ C642 DD 6E 17 LD L,(IX+CHP.TSlStp)
1088++ C645 DD 66 18 LD H,(IX+CHP.TSlStp+1)
1089++ C648 7C LD A,H
1090++ C649 19 ADD HL,DE
1091++ C64A DD 75 06 LD (IX+CHP.CrTnSl),L
1092++ C64D DD 74 07 LD (IX+CHP.CrTnSl+1),H
1093++ C650 DD CB 15 56 BIT 2,(IX+CHP.Flags)
1094++ C654 20 1F JR NZ,CH_AMP
1095++ C656 DD 5E 19 LD E,(IX+CHP.TnDelt)
1096++ C659 DD 56 1A LD D,(IX+CHP.TnDelt+1)
1097++ C65C A7 AND A
1098++ C65D 28 01 JR Z,CH_STPP
1099++ C65F EB EX DE,HL
1100++ C660 ED 52 CH_STPP SBC HL,DE
1101++ C662 FA 75 C6 JP M,CH_AMP
1102++ C665 DD 7E 13 LD A,(IX+CHP.SlToNt)
1103++ C668 DD 77 12 LD (IX+CHP.Note),A
1104++ C66B AF XOR A
1105++ C66C DD 77 05 LD (IX+CHP.TSlCnt),A
1106++ C66F DD 77 06 LD (IX+CHP.CrTnSl),A
1107++ C672 DD 77 07 LD (IX+CHP.CrTnSl+1),A
1108++ C675 DD 7E 02 CH_AMP LD A,(IX+CHP.CrAmSl)
1109++ C678 CB 79 BIT 7,C
1110++ C67A 28 13 JR Z,CH_NOAM
1111++ C67C CB 71 BIT 6,C
1112++ C67E 28 07 JR Z,CH_AMIN
1113++ C680 FE 0F CP 15
1114++ C682 28 0B JR Z,CH_NOAM
1115++ C684 3C INC A
1116++ C685 18 05 JR CH_SVAM
1117++ C687 FE F1 CH_AMIN CP -15
1118++ C689 28 04 JR Z,CH_NOAM
1119++ C68B 3D DEC A
1120++ C68C DD 77 02 CH_SVAM LD (IX+CHP.CrAmSl),A
1121++ C68F 6F CH_NOAM LD L,A
1122++ C690 78 LD A,B
1123++ C691 E6 0F AND 15
1124++ C693 85 ADD A,L
1125++ C694 F2 98 C6 JP P,CH_APOS
1126++ C697 AF XOR A
1127++ C698 FE 10 CH_APOS CP 16
1128++ C69A 38 02 JR C,CH_VOL
1129++ C69C 3E 0F LD A,15
1130++ C69E DD B6 1C CH_VOL OR (IX+CHP.Volume)
1131++ C6A1 C6 0D ADD A,VT_&255
1132++ C6A3 6F LD L,A
1133++ C6A4 CE CA ADC A,VT_/256
1134++ C6A6 95 SUB L
1135++ C6A7 67 LD H,A
1136++ C6A8 7E LD A,(HL)
1137++ C6A9 CB 41 CH_ENV BIT 0,C
1138++ C6AB 20 03 JR NZ,CH_NOEN
1139++ C6AD DD B6 14 OR (IX+CHP.Env_En)
1140++ C6B0 32 CE C7 CH_NOEN LD (Ampl),A
1141++ C6B3 CB 78 BIT 7,B
1142++ C6B5 79 LD A,C
1143++ C6B6 28 1A JR Z,NO_ENSL
1144++ C6B8 17 RLA
1145++ C6B9 17 RLA
1146++ C6BA CB 2F SRA A
1147++ C6BC CB 2F SRA A
1148++ C6BE CB 2F SRA A
1149++ C6C0 DD 86 04 ADD A,(IX+CHP.CrEnSl) ;SEE COMMENT BELOW
1150++ C6C3 CB 68 BIT 5,B
1151++ C6C5 28 03 JR Z,NO_ENAC
1152++ C6C7 DD 77 04 LD (IX+CHP.CrEnSl),A
1153++ C6CA FD 86 12 NO_ENAC ADD A,(IY-100+VRS.AddToEn) ;BUG IN PT3 - NEED WORD HERE
1154++ C6CD FD 77 12 LD (IY-100+VRS.AddToEn),A
1155++ C6D0 18 0E JR CH_MIX
1156++ C6D2 1F NO_ENSL RRA
1157++ C6D3 DD 86 03 ADD A,(IX+CHP.CrNsSl)
1158++ C6D6 FD 77 11 LD (IY-100+VRS.AddToNs),A
1159++ C6D9 CB 68 BIT 5,B
1160++ C6DB 28 03 JR Z,CH_MIX
1161++ C6DD DD 77 03 LD (IX+CHP.CrNsSl),A
1162++ C6E0 78 CH_MIX LD A,B
1163++ C6E1 1F RRA
1164++ C6E2 E6 48 AND #48
1165++ C6E4 FD B6 1C CH_EXIT OR (IY-100+VRS.AYREGS+Mixer)
1166++ C6E7 0F RRCA
1167++ C6E8 FD 77 1C LD (IY-100+VRS.AYREGS+Mixer),A
1168++ C6EB E1 POP HL
1169++ C6EC AF XOR A
1170++ C6ED DD B6 0A OR (IX+CHP.COnOff)
1171++ C6F0 C8 RET Z
1172++ C6F1 DD 35 0A DEC (IX+CHP.COnOff)
1173++ C6F4 C0 RET NZ
1174++ C6F5 DD AE 15 XOR (IX+CHP.Flags)
1175++ C6F8 DD 77 15 LD (IX+CHP.Flags),A
1176++ C6FB 1F RRA
1177++ C6FC DD 7E 0B LD A,(IX+CHP.OnOffD)
1178++ C6FF 38 03 JR C,CH_ONDL
1179++ C701 DD 7E 0C LD A,(IX+CHP.OffOnD)
1180++ C704 DD 77 0A CH_ONDL LD (IX+CHP.COnOff),A
1181++ C707 C9 RET
1182++ C708
1183++ C708 AF PLAY_ XOR A
1184++ C709 FD 77 12 LD (IY-100+VRS.AddToEn),A
1185++ C70C FD 77 1C LD (IY-100+VRS.AYREGS+Mixer),A
1186++ C70F 3D DEC A
1187++ C710 FD 77 22 LD (IY-100+VRS.AYREGS+EnvTp),A
1188++ C713 FD 35 09 DEC (IY-100+VRS.DelyCnt)
1189++ C716 C2 BB C7 JP NZ,PL2
1190++ C719 FD 35 BA DEC (IY-100+VRS.ChanA+CHP.NtSkCn)
1191++ C71C 20 69 JR NZ,PL1B
1192++ C71E FD 4E FE LD C,(IY-100+VRS.AdInPtA)
1193++ C721 FD 46 FF LD B,(IY-100+VRS.AdInPtA+1)
1194++ C724 0A LD A,(BC)
1195++ C725 A7 AND A
1196++ C726 20 53 JR NZ,PL1A
1197++ C728 57 LD D,A
1198++ C729 FD 77 10 LD (IY-100+VRS.Ns_Base),A
1199++ C72C FD 6E 04 LD L,(IY-100+VRS.CrPsPtr)
1200++ C72F FD 66 05 LD H,(IY-100+VRS.CrPsPtr+1)
1201++ C732 23 INC HL
1202++ C733 7E LD A,(HL)
1203++ C734 3C INC A
1204++ C735 20 08 JR NZ,PLNLP
1205++ C737
1206++ C737 IF LoopChecker
1207++ C737~ CALL CHECKLP
1208++ C737 ENDIF
1209++ C737
1210++ C737 FD 6E 06 LD L,(IY-100+VRS.LPosPtr)
1211++ C73A FD 66 07 LD H,(IY-100+VRS.LPosPtr+1)
1212++ C73D 7E LD A,(HL)
1213++ C73E 3C INC A
1214++ C73F CD 96 C2 PLNLP CALL SETCPPT
1215++ C742 3D DEC A
1216++ C743 FD CB 9E 4E BIT 1,(IY-100+VRS.ModNum)
1217++ C747 28 03 JR Z,NoAlCo
1218++ C749 TSSub EQU $+1
1219++ C749 D6 D6 SUB #D6
1220++ C74B 2F CPL
1221++ C74C NoAlCo
1222++ C74C ;PT2 PT3
1223++ C74C 3D PsCalc DEC A ;ADD A,A NOP
1224++ C74D 3D DEC A ;ADD A,(HL) NOP
1225++ C74E 87 ADD A,A
1226++ C74F 5F LD E,A
1227++ C750 CB 12 RL D
1228++ C752
1229++ C752 IF CurPosCounter
1230++ C752~ LD A,L
1231++ C752~ SUB (IY-100+VRS.PosSub)
1232++ C752~ LD (IY-100+VRS.CurPos),A
1233++ C752 ENDIF
1234++ C752
1235++ C752 FD 6E FC LD L,(IY-100+VRS.PatsPtr)
1236++ C755 FD 66 FD LD H,(IY-100+VRS.PatsPtr+1)
1237++ C758 19 ADD HL,DE
1238++ C759 FD 5E F6 LD E,(IY-100+VRS.MODADDR)
1239++ C75C FD 56 F7 LD D,(IY-100+VRS.MODADDR+1)
1240++ C75F ED 73 79 C7 LD (PSP_+1),SP
1241++ C763 F9 LD SP,HL
1242++ C764 E1 POP HL
1243++ C765 19 ADD HL,DE
1244++ C766 44 LD B,H
1245++ C767 4D LD C,L
1246++ C768 E1 POP HL
1247++ C769 19 ADD HL,DE
1248++ C76A FD 75 00 LD (IY-100+VRS.AdInPtB),L
1249++ C76D FD 74 01 LD (IY-100+VRS.AdInPtB+1),H
1250++ C770 E1 POP HL
1251++ C771 19 ADD HL,DE
1252++ C772 FD 75 02 LD (IY-100+VRS.AdInPtC),L
1253++ C775 FD 74 03 LD (IY-100+VRS.AdInPtC+1),H
1254++ C778 31 31 31 PSP_ LD SP,#3131
1255++ C77B 11 AB FF PL1A LD DE,VRS.ChanA+12-100
1256++ C77E CD B9 C2 CALL PTDECOD
1257++ C781 FD 71 FE LD (IY-100+VRS.AdInPtA),C
1258++ C784 FD 70 FF LD (IY-100+VRS.AdInPtA+1),B
1259++ C787
1260++ C787 FD 35 D7 PL1B DEC (IY-100+VRS.ChanB+CHP.NtSkCn)
1261++ C78A 20 12 JR NZ,PL1C
1262++ C78C 11 C8 FF LD DE,VRS.ChanB+12-100
1263++ C78F FD 4E 00 LD C,(IY-100+VRS.AdInPtB)
1264++ C792 FD 46 01 LD B,(IY-100+VRS.AdInPtB+1)
1265++ C795 CD B9 C2 CALL PTDECOD
1266++ C798 FD 71 00 LD (IY-100+VRS.AdInPtB),C
1267++ C79B FD 70 01 LD (IY-100+VRS.AdInPtB+1),B
1268++ C79E
1269++ C79E FD 35 F4 PL1C DEC (IY-100+VRS.ChanC+CHP.NtSkCn)
1270++ C7A1 20 12 JR NZ,PL1D
1271++ C7A3 11 E5 FF LD DE,VRS.ChanC+12-100
1272++ C7A6 FD 4E 02 LD C,(IY-100+VRS.AdInPtC)
1273++ C7A9 FD 46 03 LD B,(IY-100+VRS.AdInPtC+1)
1274++ C7AC CD B9 C2 CALL PTDECOD
1275++ C7AF FD 71 02 LD (IY-100+VRS.AdInPtC),C
1276++ C7B2 FD 70 03 LD (IY-100+VRS.AdInPtC+1),B
1277++ C7B5
1278++ C7B5 FD 7E 08 PL1D LD A,(IY-100+VRS.Delay)
1279++ C7B8 FD 77 09 LD (IY-100+VRS.DelyCnt),A
1280++ C7BB
1281++ C7BB 11 9F FF PL2 LD DE,VRS.ChanA-100
1282++ C7BE FD 6E 15 LD L,(IY-100+VRS.AYREGS+TonA)
1283++ C7C1 FD 66 16 LD H,(IY-100+VRS.AYREGS+TonA+1)
1284++ C7C4 CD 91 C5 CALL CHREGS
1285++ C7C7 FD 75 15 LD (IY-100+VRS.AYREGS+TonA),L
1286++ C7CA FD 74 16 LD (IY-100+VRS.AYREGS+TonA+1),H
1287++ C7CD Ampl EQU $+1
1288++ C7CD 3E 3E LD A,#3E
1289++ C7CF FD 77 1D LD (IY-100+VRS.AYREGS+AmplA),A
1290++ C7D2 11 BC FF LD DE,VRS.ChanB-100
1291++ C7D5 FD 6E 17 LD L,(IY-100+VRS.AYREGS+TonB)
1292++ C7D8 FD 66 18 LD H,(IY-100+VRS.AYREGS+TonB+1)
1293++ C7DB CD 91 C5 CALL CHREGS
1294++ C7DE FD 75 17 LD (IY-100+VRS.AYREGS+TonB),L
1295++ C7E1 FD 74 18 LD (IY-100+VRS.AYREGS+TonB+1),H
1296++ C7E4 3A CE C7 LD A,(Ampl)
1297++ C7E7 FD 77 1E LD (IY-100+VRS.AYREGS+AmplB),A
1298++ C7EA 11 D9 FF LD DE,VRS.ChanC-100
1299++ C7ED FD 6E 19 LD L,(IY-100+VRS.AYREGS+TonC)
1300++ C7F0 FD 66 1A LD H,(IY-100+VRS.AYREGS+TonC+1)
1301++ C7F3 CD 91 C5 CALL CHREGS
1302++ C7F6 FD 75 19 LD (IY-100+VRS.AYREGS+TonC),L
1303++ C7F9 FD 74 1A LD (IY-100+VRS.AYREGS+TonC+1),H
1304++ C7FC 3A CE C7 LD A,(Ampl)
1305++ C7FF FD 77 1F LD (IY-100+VRS.AYREGS+AmplC),A
1306++ C802
1307++ C802 FD 7E 10 LD A,(IY-100+VRS.Ns_Base)
1308++ C805 FD 86 11 ADD (IY-100+VRS.AddToNs)
1309++ C808 FD 77 1B LD (IY-100+VRS.AYREGS+Noise),A
1310++ C80B
1311++ C80B FD 7E 12 LD A,(IY-100+VRS.AddToEn)
1312++ C80E 5F LD E,A
1313++ C80F 87 ADD A,A
1314++ C810 9F SBC A,A
1315++ C811 57 LD D,A
1316++ C812 FD 6E 13 LD L,(IY-100+VRS.EnvBase)
1317++ C815 FD 66 14 LD H,(IY-100+VRS.EnvBase+1)
1318++ C818 19 ADD HL,DE
1319++ C819 FD 5E 0C LD E,(IY-100+VRS.CurESld)
1320++ C81C FD 56 0D LD D,(IY-100+VRS.CurESld+1)
1321++ C81F 19 ADD HL,DE
1322++ C820 FD 75 20 LD (IY-100+VRS.AYREGS+Env),L
1323++ C823 FD 74 21 LD (IY-100+VRS.AYREGS+Env+1),H
1324++ C826
1325++ C826 AF XOR A
1326++ C827 FD B6 0F OR (IY-100+VRS.CurEDel)
1327++ C82A C8 RET Z
1328++ C82B FD 35 0F DEC (IY-100+VRS.CurEDel)
1329++ C82E C0 RET NZ
1330++ C82F FD 7E 0E LD A,(IY-100+VRS.Env_Del)
1331++ C832 FD 77 0F LD (IY-100+VRS.CurEDel),A
1332++ C835 FD 6E 0A LD L,(IY-100+VRS.ESldAdd)
1333++ C838 FD 66 0B LD H,(IY-100+VRS.ESldAdd+1)
1334++ C83B 19 ADD HL,DE
1335++ C83C C3 AB C2 JP SETESLD
1336++ C83F
1337++ C83F FD 21 73 C9 PLAY LD IY,VARS1+100
1338++ C843 CD 08 C7 CALL PLAY_
1339++ C846 3A 0E C9 LD A,(is_ts)
1340++ C849 A7 AND A
1341++ C84A 28 07 JR Z,PL_nts
1342++ C84C FD 21 FA C9 LD IY,VARS2+100
1343++ C850 CD 08 C7 CALL PLAY_
1344++ C853 PL_nts
1345++ C853 IF Basic
1346++ C853~ LD IY,#5C3A
1347++ C853 ENDIF
1348++ C853
1349++ C853 01 FD FF ROUT LD BC,#FFFD
1350++ C856 3A 0E C9 LD A,(is_ts)
1351++ C859 A7 AND A
1352++ C85A IFDEF ONtfm
1353++ C85A~ LD L,#F9
1354++ C85A~ OUT (C),L
1355++ C85A ELSE
1356++ C85A 28 02 JR Z,r_nts ;keep old standard
1357++ C85C ED 41 OUT (C),B
1358++ C85E ENDIF
1359++ C85E 08 r_nts EX AF,AF'
1360++ C85F
1361++ C85F IF ACBBAC
1362++ C85F~ LD IX,VARS1+VRS.AYREGS
1363++ C85F ELSE
1364++ C85F 21 88 C9 LD HL,VARS1+VRS.AYREGS
1365++ C862 ENDIF
1366++ C862
1367++ C862 CD 6E C8 CALL ROUT_
1368++ C865 08 EX AF,AF'
1369++ C866 C8 RET Z
1370++ C867 42 LD B,D
1371++ C868
1372++ C868 IFDEF ONtfm
1373++ C868~ LD A,#F8
1374++ C868 ELSE
1375++ C868 2F CPL
1376++ C869 ENDIF
1377++ C869 ED 79 OUT (C),A
1378++ C86B
1379++ C86B IF ACBBAC
1380++ C86B~ LD IX,VARS2+VRS.AYREGS
1381++ C86B ELSE
1382++ C86B 21 0F CA LD HL,VARS2+VRS.AYREGS
1383++ C86E ENDIF
1384++ C86E
1385++ C86E ROUT_
1386++ C86E IF ACBBAC
1387++ C86E~ LD A,(SETUP)
1388++ C86E~ AND 12
1389++ C86E~ JR Z,ABC
1390++ C86E~ ADD A,CHTABLE
1391++ C86E~ LD E,A
1392++ C86E~ ADC A,CHTABLE/256
1393++ C86E~ SUB E
1394++ C86E~ LD D,A
1395++ C86E~ LD B,0
1396++ C86E~ PUSH IX
1397++ C86E~ POP HL
1398++ C86E~ LD A,(DE)
1399++ C86E~ INC DE
1400++ C86E~ LD C,A
1401++ C86E~ ADD HL,BC
1402++ C86E~ LD A,(IX+TonB)
1403++ C86E~ LD C,(HL)
1404++ C86E~ LD (IX+TonB),C
1405++ C86E~ LD (HL),A
1406++ C86E~ INC HL
1407++ C86E~ LD A,(IX+TonB+1)
1408++ C86E~ LD C,(HL)
1409++ C86E~ LD (IX+TonB+1),C
1410++ C86E~ LD (HL),A
1411++ C86E~ LD A,(DE)
1412++ C86E~ INC DE
1413++ C86E~ LD C,A
1414++ C86E~ ADD HL,BC
1415++ C86E~ LD A,(IX+AmplB)
1416++ C86E~ LD C,(HL)
1417++ C86E~ LD (IX+AmplB),C
1418++ C86E~ LD (HL),A
1419++ C86E~ LD A,(DE)
1420++ C86E~ INC DE
1421++ C86E~ LD (RxCA1),A
1422++ C86E~ XOR 8
1423++ C86E~ LD (RxCA2),A
1424++ C86E~ LD A,(DE)
1425++ C86E~ AND (IX+Mixer)
1426++ C86E~ LD E,A
1427++ C86E~ LD A,(IX+Mixer)
1428++ C86E~ RxCA1 DB #E6
1429++ C86E~ AND %010010
1430++ C86E~ OR E
1431++ C86E~ LD E,A
1432++ C86E~ LD A,(IX+Mixer)
1433++ C86E~ AND %010010
1434++ C86E~ RxCA2 OR E
1435++ C86E~ OR E
1436++ C86E~ LD (IX+Mixer),A
1437++ C86E~ ABC
1438++ C86E ENDIF
1439++ C86E
1440++ C86E AF XOR A
1441++ C86F 11 BF FF LD DE,#FFBF
1442++ C872
1443++ C872 IF ACBBAC
1444++ C872~ LD BC,#FFFD
1445++ C872~ PUSH IX
1446++ C872~ POP HL
1447++ C872 ENDIF
1448++ C872
1449++ C872 LOUT
1450++ C872 IFDEF ONtfm
1451++ C872~ INF
1452++ C872~ JP M,$-2
1453++ C872 ENDIF
1454++ C872 ED 79 OUT (C),A
1455++ C874 IFDEF ONtfm
1456++ C874~ INF
1457++ C874~ JP M,$-2
1458++ C874 ENDIF
1459++ C874 43 LD B,E
1460++ C875 ED A3 OUTI
1461++ C877 42 LD B,D
1462++ C878 3C INC A
1463++ C879 FE 0D CP 13
1464++ C87B 20 F5 JR NZ,LOUT
1465++ C87D IFDEF ONtfm
1466++ C87D~ INF
1467++ C87D~ JP M,$-2
1468++ C87D ENDIF
1469++ C87D ED 79 OUT (C),A
1470++ C87F 7E LD A,(HL)
1471++ C880 A7 AND A
1472++ C881 F8 RET M
1473++ C882 IFDEF ONtfm
1474++ C882~ INF
1475++ C882~ JP M,$-2
1476++ C882 ENDIF
1477++ C882 43 LD B,E
1478++ C883 ED 79 OUT (C),A
1479++ C885 C9 RET
1480++ C886
1481++ C886 IF ACBBAC
1482++ C886~ CHTABLE EQU $-4
1483++ C886~ DB 4,5,15,%001001,0,7,7,%100100
1484++ C886 ENDIF
1485++ C886
1486++ C886 64 NT_DATA DB (T_NEW_0-T1_)*2
1487++ C887 2A DB TCNEW_0-T_
1488++ C888 65 DB (T_OLD_0-T1_)*2+1
1489++ C889 00 DB TCOLD_0-T_
1490++ C88A 01 DB (T_NEW_1-T1_)*2+1
1491++ C88B 0C DB TCNEW_1-T_
1492++ C88C 01 DB (T_OLD_1-T1_)*2+1
1493++ C88D 0C DB TCOLD_1-T_
1494++ C88E 94 DB (T_NEW_2-T1_)*2
1495++ C88F 35 DB TCNEW_2-T_
1496++ C890 30 DB (T_OLD_2-T1_)*2
1497++ C891 0E DB TCOLD_2-T_
1498++ C892 60 DB (T_NEW_3-T1_)*2
1499++ C893 20 DB TCNEW_3-T_
1500++ C894 60 DB (T_OLD_3-T1_)*2
1501++ C895 21 DB TCOLD_3-T_
1502++ C896
1503++ C896 T_
1504++ C896
1505++ C896 TCOLD_0 DB #00+1,#04+1,#08+1,#0A+1,#0C+1,#0E+1,#12+1,#14+1
1505++ C896 0105090B0D0F1315
1506++ C89E 19 25 3D 00 DB #18+1,#24+1,#3C+1,0
1507++ C8A2 5D 00 TCOLD_1 DB #5C+1,0
1508++ C8A4 TCOLD_2 DB #30+1,#36+1,#4C+1,#52+1,#5E+1,#70+1,#82,#8C,#9C
1508++ C8A4 31374D535F71828C9C
1509++ C8AD DB #9E,#A0,#A6,#A8,#AA,#AC,#AE,#AE,0
1509++ C8AD 9EA0A6A8AAACAEAE00
1510++ C8B6 57 TCNEW_3 DB #56+1
1511++ C8B7 TCOLD_3 DB #1E+1,#22+1,#24+1,#28+1,#2C+1,#2E+1,#32+1,#BE+1,0
1511++ C8B7 1F2325292D2F33BF00
1512++ C8C0 TCNEW_0 DB #1C+1,#20+1,#22+1,#26+1,#2A+1,#2C+1,#30+1,#54+1
1512++ C8C0 1D2123272B2D3155
1513++ C8C8 BD BF 00 DB #BC+1,#BE+1,0
1514++ C8CB TCNEW_1 EQU TCOLD_1
1515++ C8CB TCNEW_2 DB #1A+1,#20+1,#24+1,#28+1,#2A+1,#3A+1,#4C+1,#5E+1
1515++ C8CB 1B2125292B3B4D5F
1516++ C8D3 BB BD BF 00 DB #BA+1,#BC+1,#BE+1,0
1517++ C8D7
1518++ C8D7 PT3EMPTYORN EQU $-1
1519++ C8D7 01 00 DB 1,0
1520++ C8D9
1521++ C8D9 ;first 12 values of tone tables (packed)
1522++ C8D9
1523++ C8D9 0D D8 T_PACK DB #06EC*2/256,#06EC*2&255
1524++ C8DB 69 DB #0755-#06EC
1525++ C8DC 70 DB #07C5-#0755
1526++ C8DD 76 DB #083B-#07C5
1527++ C8DE 7D DB #08B8-#083B
1528++ C8DF 85 DB #093D-#08B8
1529++ C8E0 8D DB #09CA-#093D
1530++ C8E1 95 DB #0A5F-#09CA
1531++ C8E2 9D DB #0AFC-#0A5F
1532++ C8E3 A8 DB #0BA4-#0AFC
1533++ C8E4 B1 DB #0C55-#0BA4
1534++ C8E5 BB DB #0D10-#0C55
1535++ C8E6 0C DA DB #066D*2/256,#066D*2&255
1536++ C8E8 62 DB #06CF-#066D
1537++ C8E9 68 DB #0737-#06CF
1538++ C8EA 6D DB #07A4-#0737
1539++ C8EB 75 DB #0819-#07A4
1540++ C8EC 7B DB #0894-#0819
1541++ C8ED 83 DB #0917-#0894
1542++ C8EE 8A DB #09A1-#0917
1543++ C8EF 92 DB #0A33-#09A1
1544++ C8F0 9C DB #0ACF-#0A33
1545++ C8F1 A4 DB #0B73-#0ACF
1546++ C8F2 AF DB #0C22-#0B73
1547++ C8F3 B8 DB #0CDA-#0C22
1548++ C8F4 0E 08 DB #0704*2/256,#0704*2&255
1549++ C8F6 6A DB #076E-#0704
1550++ C8F7 72 DB #07E0-#076E
1551++ C8F8 78 DB #0858-#07E0
1552++ C8F9 7E DB #08D6-#0858
1553++ C8FA 86 DB #095C-#08D6
1554++ C8FB 90 DB #09EC-#095C
1555++ C8FC 96 DB #0A82-#09EC
1556++ C8FD A0 DB #0B22-#0A82
1557++ C8FE AA DB #0BCC-#0B22
1558++ C8FF B4 DB #0C80-#0BCC
1559++ C900 BE DB #0D3E-#0C80
1560++ C901 0F C0 DB #07E0*2/256,#07E0*2&255
1561++ C903 78 DB #0858-#07E0
1562++ C904 88 DB #08E0-#0858
1563++ C905 80 DB #0960-#08E0
1564++ C906 90 DB #09F0-#0960
1565++ C907 98 DB #0A88-#09F0
1566++ C908 A0 DB #0B28-#0A88
1567++ C909 B0 DB #0BD8-#0B28
1568++ C90A A8 DB #0C80-#0BD8
1569++ C90B E0 DB #0D60-#0C80
1570++ C90C B0 DB #0E10-#0D60
1571++ C90D E8 DB #0EF8-#0E10
1572++ C90E
1573++ C90E ;vars from here can be stripped
1574++ C90E ;you can move VARS to any other address
1575++ C90E
1576++ C90E VARS
1577++ C90E
1578++ C90E 00 is_ts DB 0
1579++ C90F
1580++ C90F ;ChannelsVars
1581++ C90F STRUCT CHP
1582++ C90F~ ;reset group
1583++ C90F~ PsInOr DB 0
1584++ C90F~ PsInSm DB 0
1585++ C90F~ CrAmSl DB 0
1586++ C90F~ CrNsSl DB 0
1587++ C90F~ CrEnSl DB 0
1588++ C90F~ TSlCnt DB 0
1589++ C90F~ CrTnSl DW 0
1590++ C90F~ TnAcc DW 0
1591++ C90F~ COnOff DB 0
1592++ C90F~ ;reset group
1593++ C90F~ 1594++ C90F~ OnOffD DB 0
1595++ C90F~ 1596++ C90F~ ;IX for PTDECOD here (+12)
1597++ C90F~ OffOnD DB 0
1598++ C90F~ OrnPtr DW 0
1599++ C90F~ SamPtr DW 0
1600++ C90F~ NNtSkp DB 0
1601++ C90F~ Note DB 0
1602++ C90F~ SlToNt DB 0
1603++ C90F~ Env_En DB 0
1604++ C90F~ Flags DB 0
1605++ C90F~ ;Enabled - 0, SimpleGliss - 2
1606++ C90F~ TnSlDl DB 0
1607++ C90F~ TSlStp DW 0
1608++ C90F~ TnDelt DW 0
1609++ C90F~ NtSkCn DB 0
1610++ C90F~ Volume DB 0
1611++ C90F ENDS
1612++ C90F
1613++ C90F STRUCT VRS
1614++ C90F~ 1615++ C90F~ ;IF not works in STRUCT in SjASM :(
1616++ C90F~ ; IF CurPosCounter
1617++ C90F~ CurPos DB 0
1618++ C90F~ PosSub DB 0
1619++ C90F~ ; ENDIF
1620++ C90F~ 1621++ C90F~ ModNum DB 0 ;bit0: ChipNum
1622++ C90F~ ;bit1: 1-reversed patterns order (AlCo TS)
1623++ C90F~ 1624++ C90F~ ChanA DS CHP
1625++ C90F~ ChanB DS CHP
1626++ C90F~ ChanC DS CHP
1627++ C90F~ 1628++ C90F~ ;GlobalVars
1629++ C90F~ MODADDR DW 0
1630++ C90F~ OrnPtrs DW 0
1631++ C90F~ SamPtrs DW 0
1632++ C90F~ PatsPtr DW 0
1633++ C90F~ AdInPtA DW 0
1634++ C90F~ AdInPtB DW 0
1635++ C90F~ AdInPtC DW 0
1636++ C90F~ CrPsPtr DW 0
1637++ C90F~ LPosPtr DW 0
1638++ C90F~ Delay DB 0
1639++ C90F~ DelyCnt DB 0
1640++ C90F~ ESldAdd DW 0
1641++ C90F~ CurESld DW 0
1642++ C90F~ Env_Del DB 0
1643++ C90F~ CurEDel DB 0
1644++ C90F~ Ns_Base DB 0
1645++ C90F~ AddToNs DB 0
1646++ C90F~ AddToEn DB 0
1647++ C90F~ EnvBase DW 0
1648++ C90F~ AYREGS DS 14
1649++ C90F ENDS
1650++ C90F
1651++ C90F 00 VARS1 DS VRS
1652++ C996 00 VARS2 DS VRS
1653++ CA1D
1654++ CA1D VT_ EQU $-16
1655++ CA1D 00 DS 256-16 ;CreatedVolumeTableAddress
1656++ CB0D
1657++ CB0D T1_ EQU VT_+16 ;Tone tables data depacked here
1658++ CB0D
1659++ CB0D T_OLD_1 EQU T1_
1660++ CB0D T_OLD_2 EQU T_OLD_1+24
1661++ CB0D T_OLD_3 EQU T_OLD_2+24
1662++ CB0D T_OLD_0 EQU T_OLD_3+2
1663++ CB0D T_NEW_0 EQU T_OLD_0
1664++ CB0D T_NEW_1 EQU T_OLD_1
1665++ CB0D T_NEW_2 EQU T_NEW_0+24
1666++ CB0D T_NEW_3 EQU T_OLD_3
1667++ CB0D
1668++ CB0D PT2EMPTYORN EQU VT_+31 ;1,0,0 sequence
1669++ CB0D
1670++ CB0D 00 NT_ DS 192 ;CreatedNoteTableAddress
1671++ CBCD
1672++ CBCD VAR0END EQU VT_+16 ;INIT zeroes from VARS to VAR0END-1
1673++ CBCD
1674++ CBCD VARSEND EQU $
1675++ CBCD MDLADDR EQU $
1676++ CBCD
1677++ CBCD DISPLAY "PTS player size=",$-START
1678++ CBCD
1679++ CBCD ;Release 0 steps:
1680++ CBCD ;04/21/2007
1681++ CBCD ;Works start (PTxPlay adaptation); first beta.
1682++ CBCD ;04/22/2007
1683++ CBCD ;Job finished; beta-testing.
1684++ CBCD ;04/23/2007
1685++ CBCD ;PT v3.7 TS mode corrected (after AlCo remarks).
1686++ CBCD ;04/29/2007
1687++ CBCD ;Added 1.XX and 2.XX special commands interpretation for PT3
1688++ CBCD ;modules of v3.7+.
1689++ CBCD
1690++ CBCD ;Size (minimal build for ZX Spectrum):
1691++ CBCD ;Code block #908 bytes
1692++ CBCD ;Variables #2BF bytes (can be stripped)
1693++ CBCD ;Total size #908+#2BF=#BC7 (3015) bytes
1694++ CBCD
1695++ CBCD ENDMOD
1696++ CBCD
1697++ CBCD endif
1698++ CBCD
0099+ CBCD PT3.Play=PTS.PLAY
0100+ CBCD PT3.Mute=PTS.MUTE
0101+ CBCD PT3.End
0102+ CBCD
0103+ CBCD display "PT3 module size: ",PT3.End-PT3.Start
0104+ CBCD
0105+ CBCD endif
0106+ CBCD
0013 CBCD
0014 CBCD module
0015 CBCD ;incbin PT3_DRUMTEST
0016 CBCD ;incbin PT3_MYSTICAL
0017 CBCD ;incbin PT3_NEWOLD
0018 CBCD incbin PT3_SNEGURKA
0019 D0E3
0020 D0E3 savesna "test_pt3.sna",begin
0021 D0E3 savebin "../pt3_c000.bin",player,module-player
0022 D0E3
Value Label
------ - -----------------------------------------------------------
0x6000 begin
0xC000 init
0x600D begin.loop
0x6014 begin.delay
0xC005 play
0xC008 mute
0x602C X begin.fail
0xC000 player
0x00CB X PT3.Header
0x0000 X PT3.Header.Id
0x000D X PT3.Header.Subversion
0x000E X PT3.Header.Description
0x0062 X PT3.Header.Mode
0x0063 X PT3.Header.FreqTable
0x0064 X PT3.Header.Tempo
0x0065 X PT3.Header.Length
0x0066 X PT3.Header.Loop
0x0067 X PT3.Header.Patterns
0x0069 X PT3.Header.Samples
0x00A9 X PT3.Header.Ornaments
0x00C9 X PT3.Header.Positions
0xC000 PT3.Start
0xCBCD PT3.End
0xC00B PT3.Init
0xC83F PTS.PLAY
0xC011 PTS.MUTE
0x0020 PTS.SETUP.TSPT3
0xC023 PTS.INIT
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
0xC010 PTS.START
0x0001 X PTS.SETUP.NOLOOP
0x0002 PTS.SETUP.PT2
0x0004 X PTS.SETUP.ACB
0x0008 X PTS.SETUP.BAC
0x0010 PTS.SETUP.TS02
0xC010 PTS.SETUP
0xC90F PTS.VARS1
0x0079 PTS.VRS.AYREGS
0xC996 PTS.VARS2
0xC853 PTS.ROUT
0xC90E PTS.VARS
0xCA1D PTS.VAR0END
0x0062 PTS.VRS.AdInPtA
0xC0CC PTS.I_PT2
0xC215 PTS.INITPT3
0xC609 PTS.e_
0xC5E8 PTS.SamCnv
0xC5B3 PTS.OrnCP
0xC5DF PTS.SamCP
0xC5B6 PTS.OrnLD
0xC5E2 PTS.SamLD
0xC5D9 PTS.SamClc2
0xC070 PTS.L20
0xC072 PTS.L21
0xC486 PTS.Version
0xC0C1 PTS.NOTS
0xC0B5 PTS.TwoPT3s
0x0087 PTS.VRS
0x0002 PTS.VRS.ModNum
0xC74A PTS.TSSub
0xC0B8 PTS.AlCoTS_
0xC90E PTS.is_ts
0xC3D2 PTS.PT3PD
0xC8D6 PTS.PT3EMPTYORN
0xC114 PTS.INITCOMMON
0xC24D PTS.INITPT2
0xC10B PTS.NOTS2
0xC30C PTS.PT2PD
0xCA2C PTS.PT2EMPTYORN
0xC2BD PTS.PTDEC
0xC74C PTS.PsCalc
0xC8D9 PTS.T_PACK
0xCA1D PTS.T1_
0xC122 PTS.TP_0
0xC12E PTS.TP_1
0xC135 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
0xC886 PTS.NT_DATA
0xC1A6 PTS.L3
0xC896 PTS.T_
0xCB0D PTS.NT_
0xC195 PTS.L1
0xC1A2 PTS.L2
0xC8A2 PTS.TCOLD_1
0xC1C7 PTS.CORR_1
0xC1DC PTS.TC_EXIT
0xC1D5 PTS.CORR_2
0xC1EB PTS.M1
0xC1FC PTS.M2
0xCA0D PTS.VT_
0xC1F4 PTS.INITV2
0xC1FB PTS.INITV1
0xC20F PTS.M3
0xC288 PTS.SETMDAD
0x006C PTS.VRS.Delay
0xC296 PTS.SETCPPT
0xC29D PTS.SETLPPT
0xC281 PTS.SETPTPT
0xC28F PTS.SETORPT
0xC246 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
0xC2A4 PTS.SETENBS
0x0077 PTS.VRS.EnvBase
0xC2AB PTS.SETESLD
0x0070 PTS.VRS.CurESld
0xC2B2 PTS.GETIX
0xC2B9 PTS.PTDECOD
0xC2BF PTS.PD2_SAM
0xC555 PTS.SETSAM
0xC30E PTS.PD2_LOOP
0xC2C4 PTS.PD2_EOff
0x0014 PTS.CHP.Env_En
0xC2C9 PTS.PD2_ENV
0xC2DB PTS.PD2_ORN
0xC536 PTS.SETORN
0xC2E0 PTS.PD2_SKIP
0x0011 PTS.CHP.NNtSkp
0xC2E6 PTS.PD2_VOL
0x001C PTS.CHP.Volume
0xC2EF PTS.PD2_DEL
0xC506 PTS.C_DELAY
0xC2F4 PTS.PD2_GLIS
0x0015 PTS.CHP.Flags
0x0016 PTS.CHP.TnSlDl
0x0005 PTS.CHP.TSlCnt
0x0017 PTS.CHP.TSlStp
0xC30D PTS.PD2_LP2
0xC353 PTS.PD2_REL
0xC358 PTS.PD2_NOTE
0xC435 PTS.PD_FIN
0xC343 PTS.PD2_PORT
0xC34E PTS.PD2_STOP
0x0003 PTS.CHP.CrNsSl
0xC384 PTS.PD2_EXIT
0x0012 PTS.CHP.Note
0xC46E PTS.PrNote
0xC383 PTS.NOGLIS2
0xC37F PTS.NOPORT2
0xC495 PTS.LoStep
0xC450 PTS.SETPORT
0x0001 PTS.CHP.PsInSm
0x0000 PTS.CHP.PsInOr
0x0006 PTS.CHP.CrTnSl
0xC393 PTS.PD_OrSm
0xC39A PTS.PD_SAM_
0xC39D PTS.PD_SAM
0xC3E1 PTS.PD_LOOP
0xC3A2 PTS.PD_VOL
0xC3E4 PTS.PD_LP2
0xC3AB PTS.PD_EOff
0xC3B3 PTS.PD_SorE
0xC3BD PTS.PD_ENV
0xC51B PTS.SETENV
0xC3C2 PTS.PD_ORN
0xC3C7 PTS.PD_ESAM
0xC48B PTS.PrSlide
0xC416 PTS.PD_REL
0xC41C PTS.PD_NOTE
0xC411 PTS.PD_NOIS
0xC571 PTS.SPCCOMS
0x0074 PTS.VRS.Ns_Base
0xC424 PTS.PD_RES
0xC432 PTS.PDSP_
0xC43C PTS.C_PORTM
0x0013 PTS.CHP.SlToNt
0x0019 PTS.CHP.TnDelt
0xC494 PTS.OLDPRTM
0xC49A PTS.NOSIG
0xC4A4 PTS.SET_STP
0x000A PTS.CHP.COnOff
0xC4B0 PTS.C_GLISS
0xC4C3 PTS.GL36
0xC4CD PTS.C_SMPOS
0xC4D3 PTS.C_ORPOS
0xC4D9 PTS.C_VIBRT
0x000B PTS.CHP.OnOffD
0x000C PTS.CHP.OffOnD
0xC4F1 PTS.C_ENGLS
0x0072 PTS.VRS.Env_Del
0x0073 PTS.VRS.CurEDel
0x006E PTS.VRS.ESldAdd
0xC554 PTS.C_NOP
0x000F PTS.CHP.SamPtr
0xC591 PTS.CHREGS
0xC7CE PTS.Ampl
0xC6E4 PTS.CH_EXIT
0xC62D PTS.CSP_
0xC5B7 PTS.CH_ORPS
0xC5C2 PTS.CH_NTP
0xC5C8 PTS.CH_NOK
0xC5E3 PTS.CH_SMPS
0x0008 PTS.CHP.TnAcc
0xC61A PTS.CH_NOAC
0xC675 PTS.CH_AMP
0xC660 PTS.CH_STPP
0x0002 PTS.CHP.CrAmSl
0xC68F PTS.CH_NOAM
0xC687 PTS.CH_AMIN
0xC68C PTS.CH_SVAM
0xC698 PTS.CH_APOS
0xC69E PTS.CH_VOL
0xC6A9 X PTS.CH_ENV
0xC6B0 PTS.CH_NOEN
0xC6D2 PTS.NO_ENSL
0x0004 PTS.CHP.CrEnSl
0xC6CA PTS.NO_ENAC
0x0076 PTS.VRS.AddToEn
0xC6E0 PTS.CH_MIX
0x0075 PTS.VRS.AddToNs
0xC704 PTS.CH_ONDL
0xC708 PTS.PLAY_
0xC7BB PTS.PL2
0xC787 PTS.PL1B
0xC77B PTS.PL1A
0xC73F PTS.PLNLP
0xC74C PTS.NoAlCo
0xC778 PTS.PSP_
0x0064 PTS.VRS.AdInPtB
0x0066 PTS.VRS.AdInPtC
0xC79E PTS.PL1C
0xC7B5 PTS.PL1D
0xC853 PTS.PL_nts
0xC85E PTS.r_nts
0xC86E PTS.ROUT_
0xC872 PTS.LOUT
0xCA4F PTS.T_NEW_0
0xC8C0 PTS.TCNEW_0
0xCA4F PTS.T_OLD_0
0xC896 PTS.TCOLD_0
0xCA1D PTS.T_NEW_1
0xC8A2 PTS.TCNEW_1
0xCA1D PTS.T_OLD_1
0xCA67 PTS.T_NEW_2
0xC8CB PTS.TCNEW_2
0xCA35 PTS.T_OLD_2
0xC8A4 PTS.TCOLD_2
0xCA4D PTS.T_NEW_3
0xC8B6 PTS.TCNEW_3
0xCA4D PTS.T_OLD_3
0xC8B7 PTS.TCOLD_3
0x001D PTS.CHP
0x0000 X PTS.VRS.CurPos
0x0001 X PTS.VRS.PosSub
0xCBCD X PTS.VARSEND
0xCBCD X PTS.MDLADDR
0xC83F X PT3.Play
0xC011 X PT3.Mute
0xCBCD module