8322 lines
334 KiB
Plaintext
8322 lines
334 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 80 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 80 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 80 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 #8000
|
|
0008 8000 player
|
|
0009 8000 init=player
|
|
0010 8000 play=player+5
|
|
0011 8000 mute=player+8
|
|
0012 8000 include "mtc.asm"
|
|
0001+ 8000 ifndef _mtc_asm_defined
|
|
0002+ 8000 define _mtc_asm_defined
|
|
0003+ 8000
|
|
0004+ 8000 module MTC
|
|
0005+ 8000
|
|
0006+ 8000 ;enum-like
|
|
0007+ 8000 struct StreamType
|
|
0008+ 8000~ PT3 db 0
|
|
0009+ 8000~ PT2 db 0
|
|
0010+ 8000~ TS db 0
|
|
0011+ 8000~ TFC db 0
|
|
0012+ 8000~ Unknown db 0
|
|
0013+ 8000 ends
|
|
0014+ 8000
|
|
0015+ 8000 struct StreamData
|
|
0016+ 8000~ Type db 0
|
|
0017+ 8000~ Data1 dw 0
|
|
0018+ 8000~ Data2 dw 0
|
|
0019+ 8000~ Init dw 0
|
|
0020+ 8000~ Play dw 0
|
|
0021+ 8000~ Mute dw 0
|
|
0022+ 8000 ends
|
|
0023+ 8000
|
|
0024+ 8000 Start
|
|
0025+ 8000 ifndef NoPrologue
|
|
0026+ 8000 21 73 91 ld hl,End
|
|
0027+ 8003 18 06 jr Init
|
|
0028+ 8005 C3 48 80 jp Play
|
|
0029+ 8008 C3 66 80 jp Mute
|
|
0030+ 800B endif
|
|
0031+ 800B
|
|
0032+ 800B ifdef HaveFormatCheck
|
|
0033+ 800B~
|
|
0034+ 800B~ include "format.asm"
|
|
0035+ 800B~
|
|
0036+ 800B~ ;in HL - module addr
|
|
0037+ 800B~ ;out Z - is mtc
|
|
0038+ 800B~ CheckFormat
|
|
0039+ 800B~ EqualTo "M"
|
|
0040+ 800B~ EqualTo "T"
|
|
0041+ 800B~ EqualTo "C"
|
|
0042+ 800B~ EqualTo "1"
|
|
0043+ 800B~ EqualTo 0
|
|
0044+ 800B~ EqualTo 0
|
|
0045+ 800B~ ret
|
|
0046+ 800B~
|
|
0047+ 800B~ display "MTC checker size: ",$-CheckFormat
|
|
0048+ 800B~ 0049+ 800B endif
|
|
0050+ 800B
|
|
0051+ 800B ;in HL - module addr
|
|
0052+ 800B DD 21 BD 80 Init ld ix,Streams
|
|
0053+ 800F DD 36 00 04 ld (ix+StreamData.Type),StreamType.Unknown
|
|
0054+ 8013 CD 86 80 call ParseChunk
|
|
0055+ 8016 FE 00 cp ChunkId.MTC1
|
|
0056+ 8018 CC 1C 81 call z,ParseMTC1
|
|
0057+ 801B CD E6 81 call MergeStreams
|
|
0058+ 801E DD 21 BD 80 ld ix,Streams
|
|
0059+ 8022 .initstreams
|
|
0060+ 8022 DD 7E 00 ld a,(ix+StreamData.Type)
|
|
0061+ 8025 FE 04 cp StreamType.Unknown
|
|
0062+ 8027 C8 ret z
|
|
0063+ 8028 DD 6E 01 ld l,(ix+StreamData.Data1)
|
|
0064+ 802B DD 66 02 ld h,(ix+StreamData.Data1+1)
|
|
0065+ 802E DD 5E 03 ld e,(ix+StreamData.Data2)
|
|
0066+ 8031 DD 56 04 ld d,(ix+StreamData.Data2+1)
|
|
0067+ 8034 DD 4E 05 ld c,(ix+StreamData.Init)
|
|
0068+ 8037 DD 46 06 ld b,(ix+StreamData.Init+1)
|
|
0069+ 803A DD E5 push ix
|
|
0070+ 803C CD 84 80 call jp_bc
|
|
0071+ 803F DD E1 pop ix
|
|
0072+ 8041 01 0B 00 ld bc,StreamData
|
|
0073+ 8044 DD 09 add ix,bc
|
|
0074+ 8046 18 DA jr .initstreams
|
|
0075+ 8048
|
|
0076+ 8048 DD 21 BD 80 Play ld ix,Streams
|
|
0077+ 804C .playstreams
|
|
0078+ 804C DD 7E 00 ld a,(ix+StreamData.Type)
|
|
0079+ 804F FE 04 cp StreamType.Unknown
|
|
0080+ 8051 C8 ret z
|
|
0081+ 8052 DD 4E 07 ld c,(ix+StreamData.Play)
|
|
0082+ 8055 DD 46 08 ld b,(ix+StreamData.Play+1)
|
|
0083+ 8058 DD E5 push ix
|
|
0084+ 805A CD 84 80 call jp_bc
|
|
0085+ 805D DD E1 pop ix
|
|
0086+ 805F 01 0B 00 ld bc,StreamData
|
|
0087+ 8062 DD 09 add ix,bc
|
|
0088+ 8064 18 E6 jr .playstreams
|
|
0089+ 8066
|
|
0090+ 8066 DD 21 BD 80 Mute ld ix,Streams
|
|
0091+ 806A .mutestreams
|
|
0092+ 806A DD 7E 00 ld a,(ix+StreamData.Type)
|
|
0093+ 806D FE 04 cp StreamType.Unknown
|
|
0094+ 806F C8 ret z
|
|
0095+ 8070 DD 4E 09 ld c,(ix+StreamData.Mute)
|
|
0096+ 8073 DD 46 0A ld b,(ix+StreamData.Mute+1)
|
|
0097+ 8076 DD E5 push ix
|
|
0098+ 8078 CD 84 80 call jp_bc
|
|
0099+ 807B DD E1 pop ix
|
|
0100+ 807D 01 0B 00 ld bc,StreamData
|
|
0101+ 8080 DD 09 add ix,bc
|
|
0102+ 8082 18 E6 jr .mutestreams
|
|
0103+ 8084
|
|
0104+ 8084 C5 jp_bc push bc
|
|
0105+ 8085 C9 ret
|
|
0106+ 8086
|
|
0107+ 8086 ;in hl - chunk start
|
|
0108+ 8086 ;out a - chunkid
|
|
0109+ 8086 ;out hl - chunk data start
|
|
0110+ 8086 ;out bc - chunk data size
|
|
0111+ 8086 ;corrupt de
|
|
0112+ 8086 ParseChunk
|
|
0113+ 8086 11 00 81 ld de,ChunkId
|
|
0114+ 8089 .checkid
|
|
0115+ 8089 06 04 ld b,4
|
|
0116+ 808B dup 4
|
|
0117+ 808B 1A > ld a,(de)
|
|
0118+ 808C 1C > inc e
|
|
0119+ 808D BE > cp (hl)
|
|
0120+ 808E 23 > inc hl
|
|
0121+ 808F 20 01 > jr nz,$+3
|
|
0122+ 8091 05 > dec b
|
|
0117+ 8092 1A > ld a,(de)
|
|
0118+ 8093 1C > inc e
|
|
0119+ 8094 BE > cp (hl)
|
|
0120+ 8095 23 > inc hl
|
|
0121+ 8096 20 01 > jr nz,$+3
|
|
0122+ 8098 05 > dec b
|
|
0117+ 8099 1A > ld a,(de)
|
|
0118+ 809A 1C > inc e
|
|
0119+ 809B BE > cp (hl)
|
|
0120+ 809C 23 > inc hl
|
|
0121+ 809D 20 01 > jr nz,$+3
|
|
0122+ 809F 05 > dec b
|
|
0117+ 80A0 1A > ld a,(de)
|
|
0118+ 80A1 1C > inc e
|
|
0119+ 80A2 BE > cp (hl)
|
|
0120+ 80A3 23 > inc hl
|
|
0121+ 80A4 20 01 > jr nz,$+3
|
|
0122+ 80A6 05 > dec b
|
|
0124+ 80A7 ;nz if last byte is not matched
|
|
0125+ 80A7 ;nz if b != 0 (not all bytes matched)
|
|
0126+ 80A7 7B ld a,e
|
|
0127+ 80A8 28 0A jr z,.matched
|
|
0128+ 80AA FE 1C cp ChunkId.Unknown
|
|
0129+ 80AC 28 08 jr z,.getdata
|
|
0130+ 80B1 2B 2B 2B 2B dec hl,hl,hl,hl
|
|
0131+ 80B2 18 D5 jr .checkid
|
|
0132+ 80B4 .matched
|
|
0133+ 80B4 D6 04 sub 4
|
|
0134+ 80B6 .getdata
|
|
0135+ 80B6 ;skip higher bytes of size, assume they are zero
|
|
0136+ 80B6 23 inc hl
|
|
0137+ 80B7 23 inc hl
|
|
0138+ 80B8 46 ld b,(hl)
|
|
0139+ 80B9 23 inc hl
|
|
0140+ 80BA 4E ld c,(hl)
|
|
0141+ 80BB 23 inc hl
|
|
0142+ 80BC C9 ret
|
|
0143+ 80BD
|
|
0144+ 80BD ;put streams in gap
|
|
0145+ 80BD Streams
|
|
0146+ 80BD MinStreamsCount=3 ;approx: ts+tfm
|
|
0147+ 80BD 00 ds MinStreamsCount*StreamData ;approx
|
|
0148+ 80DE Streams.End
|
|
0149+ 80DE display "MTC: loosed ",256-low $," bytes"
|
|
0150+ 80DE 00 align 256
|
|
0151+ 8100
|
|
0152+ 8100 ChunkId
|
|
0153+ 8100 .MTC1=low $
|
|
0154+ 8100 4D 54 43 31 db "MTC1"
|
|
0155+ 8104 .TRCK=low $
|
|
0156+ 8104 54 52 43 4B db "TRCK"
|
|
0157+ 8108 .DATA=low $
|
|
0158+ 8108 44 41 54 41 db "DATA"
|
|
0159+ 810C .NAME=low $
|
|
0160+ 810C 4E 41 4D 45 db "NAME"
|
|
0161+ 8110 .AUTH=low $
|
|
0162+ 8110 41 55 54 48 db "AUTH"
|
|
0163+ 8114 .ANNO=low $
|
|
0164+ 8114 41 4E 4E 4F db "ANNO"
|
|
0165+ 8118 .PROP=low $
|
|
0166+ 8118 50 52 4F 50 db "PROP"
|
|
0167+ 811C .Unknown=low $
|
|
0168+ 811C
|
|
0169+ 811C MaxStreamsCount=(ChunkId-Streams)/StreamData
|
|
0170+ 811C display "MTC: max streams ",MaxStreamsCount
|
|
0171+ 811C
|
|
0172+ 811C macro MoveNextChunk
|
|
0173+ 811C~ ;chunk is always aligned at word boundary, so correct odd length
|
|
0174+ 811C~ push bc
|
|
0175+ 811C~ pop af
|
|
0176+ 811C~ adc hl,bc
|
|
0177+ 811C endm
|
|
0178+ 811C
|
|
0179+ 811C ;in hl - content
|
|
0180+ 811C ;in bc - size
|
|
0181+ 811C ParseMTC1
|
|
0182+ 811C E5 push hl
|
|
0183+ 811D 09 add hl,bc
|
|
0184+ 811E E3 ex (sp),hl
|
|
0185+ 811F ; (sp) - end of avail data
|
|
0186+ 811F .nextchunk
|
|
0187+ 811F CD 86 80 call ParseChunk
|
|
0188+ 8122 E5 C5 push hl,bc
|
|
0189+ 8124 FE 04 cp ChunkId.TRCK
|
|
0190+ 8126 CC 37 81 call z,ParseTrack
|
|
0191+ 8129 C1 E1 pop bc,hl
|
|
0192+ 812B MoveNextChunk
|
|
0192+ 812B C5 > push bc
|
|
0192+ 812C F1 > pop af
|
|
0192+ 812D ED 4A > adc hl,bc
|
|
0193+ 812F C1 pop bc
|
|
0194+ 8130 ;hl- end of chunk
|
|
0195+ 8130 ;de- end of avail
|
|
0196+ 8130 ED 42 sbc hl,bc
|
|
0197+ 8132 C8 ret z ;last chunk
|
|
0198+ 8133 09 add hl,bc
|
|
0199+ 8134 C5 push bc
|
|
0200+ 8135 18 E8 jr .nextchunk
|
|
0201+ 8137
|
|
0202+ 8137 ;in hl - content
|
|
0203+ 8137 ;in bc - size
|
|
0204+ 8137 ParseTrack
|
|
0205+ 8137 E5 push hl
|
|
0206+ 8138 09 add hl,bc
|
|
0207+ 8139 E3 ex (sp),hl
|
|
0208+ 813A ; (sp) - end of avail data
|
|
0209+ 813A .nextchunk
|
|
0210+ 813A CD 86 80 call ParseChunk
|
|
0211+ 813D E5 C5 push hl,bc
|
|
0212+ 813F FE 08 cp ChunkId.DATA
|
|
0213+ 8141 CC 56 81 call z,ParseData
|
|
0214+ 8144 08 exa
|
|
0215+ 8145 C1 E1 pop bc,hl
|
|
0216+ 8147 MoveNextChunk
|
|
0216+ 8147 C5 > push bc
|
|
0216+ 8148 F1 > pop af
|
|
0216+ 8149 ED 4A > adc hl,bc
|
|
0217+ 814B C1 pop bc
|
|
0218+ 814C 08 exa
|
|
0219+ 814D C8 ret z ;data is parsed
|
|
0220+ 814E ;hl- end of chunk
|
|
0221+ 814E ;de- end of avail
|
|
0222+ 814E A7 and a
|
|
0223+ 814F ED 42 sbc hl,bc
|
|
0224+ 8151 C8 ret z ;last chunk
|
|
0225+ 8152 09 add hl,bc
|
|
0226+ 8153 C5 push bc
|
|
0227+ 8154 18 E4 jr .nextchunk
|
|
0228+ 8156
|
|
0229+ 8156 ;in hl - content
|
|
0230+ 8156 ;in bc - size
|
|
0231+ 8156 ;out Z - data parsed and added as stream
|
|
0232+ 8156 ParseData
|
|
0233+ 8156 CD 62 81 call ParseTFC
|
|
0234+ 8159 C4 84 81 call nz,ParseTS
|
|
0235+ 815C C4 91 81 call nz,ParsePT2
|
|
0236+ 815F 20 43 jr nz,ParsePT3
|
|
0237+ 8161 C9 ret
|
|
0238+ 8162
|
|
0239+ 8162 ParseTFC
|
|
0240+ 8162 E5 C5 push hl,bc
|
|
0241+ 8164 CD 05 8F call TFC.CheckFormat
|
|
0242+ 8167 C1 E1 pop bc,hl
|
|
0243+ 8169 C0 ret nz
|
|
0244+ 816A 3E 03 ld a,StreamType.TFC
|
|
0245+ 816C D9 exx
|
|
0246+ 816D 21 2E 8F ld hl,TFC.Init
|
|
0247+ 8170 11 E1 8F ld de,TFC.Play
|
|
0248+ 8173 01 6A 8F ld bc,TFC.Mute
|
|
0249+ 8176 CD C3 81 call FillStream
|
|
0250+ 8179 AddStream
|
|
0251+ 8179 01 0B 00 ld bc,StreamData
|
|
0252+ 817C DD 09 add ix,bc
|
|
0253+ 817E DD 36 00 04 ld (ix+StreamData.Type),StreamType.Unknown
|
|
0254+ 8182 AF xor a;set Z
|
|
0255+ 8183 C9 ret
|
|
0256+ 8184
|
|
0257+ 8184 ParseTS
|
|
0258+ 8184 E5 C5 push hl,bc
|
|
0259+ 8186 CD CD 8E call TS.CheckFormatKnownSize
|
|
0260+ 8189 C1 E1 pop bc,hl
|
|
0261+ 818B C0 ret nz
|
|
0262+ 818C CD B7 81 call FillTS
|
|
0263+ 818F 18 E8 jr AddStream
|
|
0264+ 8191
|
|
0265+ 8191 ParsePT2
|
|
0266+ 8191 E5 C5 push hl,bc
|
|
0267+ 8193 CD 7C 8E call PT2.CheckFormat
|
|
0268+ 8196 C1 E1 pop bc,hl
|
|
0269+ 8198 C0 ret nz
|
|
0270+ 8199 3E 01 ld a,StreamType.PT2
|
|
0271+ 819B D9 exx
|
|
0272+ 819C 21 77 8E ld hl,PT2.Init
|
|
0273+ 819F CD BD 81 call FillPts
|
|
0274+ 81A2 18 D5 jr AddStream
|
|
0275+ 81A4
|
|
0276+ 81A4 ParsePT3
|
|
0277+ 81A4 E5 C5 push hl,bc
|
|
0278+ 81A6 CD 30 8E call PT3.CheckFormat
|
|
0279+ 81A9 C1 E1 pop bc,hl
|
|
0280+ 81AB C0 ret nz
|
|
0281+ 81AC 3E 00 ld a,StreamType.PT3
|
|
0282+ 81AE D9 exx
|
|
0283+ 81AF 21 2B 8E ld hl,PT3.Init
|
|
0284+ 81B2 CD BD 81 call FillPts
|
|
0285+ 81B5 18 C2 jr AddStream
|
|
0286+ 81B7
|
|
0287+ 81B7 3E 02 FillTS ld a,StreamType.TS
|
|
0288+ 81B9 D9 exx
|
|
0289+ 81BA 21 B7 8E ld hl,TS.Init
|
|
0290+ 81BD 11 88 8A FillPts ld de,PTS.PLAY
|
|
0291+ 81C0 01 5A 82 ld bc,PTS.MUTE
|
|
0292+ 81C3 FillStream
|
|
0293+ 81C3 DD 77 00 ld (ix+StreamData.Type),a
|
|
0294+ 81C6 DD 75 05 ld (ix+StreamData.Init),l
|
|
0295+ 81C9 DD 74 06 ld (ix+StreamData.Init+1),h
|
|
0296+ 81CC DD 73 07 ld (ix+StreamData.Play),e
|
|
0297+ 81CF DD 72 08 ld (ix+StreamData.Play+1),d
|
|
0298+ 81D2 DD 71 09 ld (ix+StreamData.Mute),c
|
|
0299+ 81D5 DD 70 0A ld (ix+StreamData.Mute+1),b
|
|
0300+ 81D8 D9 exx
|
|
0301+ 81D9 DD 75 01 ld (ix+StreamData.Data1),l
|
|
0302+ 81DC DD 74 02 ld (ix+StreamData.Data1+1),h
|
|
0303+ 81DF DD 73 03 ld (ix+StreamData.Data2),e
|
|
0304+ 81E2 DD 72 04 ld (ix+StreamData.Data2+1),d
|
|
0305+ 81E5 C9 ret
|
|
0306+ 81E6
|
|
0307+ 81E6 ;some business-logic related to supported players
|
|
0308+ 81E6 MergeStreams
|
|
0309+ 81E6 3A BD 80 ld a,(Streams+StreamData.Type)
|
|
0310+ 81E9 FE 04 cp StreamType.Unknown
|
|
0311+ 81EB C8 ret z ;no streams
|
|
0312+ 81EC 3A C8 80 ld a,(Streams+StreamData+StreamData.Type)
|
|
0313+ 81EF FE 04 cp StreamType.Unknown
|
|
0314+ 81F1 C8 ret z ;single stream
|
|
0315+ 81F2
|
|
0316+ 81F2 ;sort streams according to type, use simple bubblesort
|
|
0317+ 81F2 Sort
|
|
0318+ 81F2 assert 0 == ((Streams ^ Streams.End) >> 8)
|
|
0319+ 81F2 assert 0 == StreamData.Type
|
|
0320+ 81F2 11 BD 80 ld de,Streams
|
|
0321+ 81F5 21 C8 80 ld hl,Streams+StreamData
|
|
0322+ 81F8 0E 00 ld c,0;swaps mark
|
|
0323+ 81FA .cycle
|
|
0324+ 81FA 1A ld a,(de)
|
|
0325+ 81FB FE 04 cp StreamType.Unknown
|
|
0326+ 81FD 28 1A jr z,.end
|
|
0327+ 81FF BE cp (hl)
|
|
0328+ 8200 38 10 jr c,.next
|
|
0329+ 8202 28 0E jr z,.next
|
|
0330+ 8204 06 0B ld b,StreamData
|
|
0331+ 8206 .swapitems
|
|
0332+ 8206 1A ld a,(de)
|
|
0333+ 8207 4E ld c,(hl)
|
|
0334+ 8208 77 ld (hl),a
|
|
0335+ 8209 79 ld a,c
|
|
0336+ 820A 12 ld (de),a
|
|
0337+ 820B 2C inc l
|
|
0338+ 820C 1C inc e
|
|
0339+ 820D 10 F7 djnz .swapitems
|
|
0340+ 820F 4C ld c,h
|
|
0341+ 8210 18 E8 jr .cycle
|
|
0342+ 8212 .next
|
|
0343+ 8212 5D ld e,l
|
|
0344+ 8213 7D ld a,l
|
|
0345+ 8214 C6 0B add a,StreamData
|
|
0346+ 8216 6F ld l,a
|
|
0347+ 8217 18 E1 jr .cycle
|
|
0348+ 8219 .end
|
|
0349+ 8219 79 ld a,c
|
|
0350+ 821A A7 and a
|
|
0351+ 821B 20 D5 jr nz,Sort
|
|
0352+ 821D ;try merge streams
|
|
0353+ 821D ; X X merged to X (last is taken)
|
|
0354+ 821D ; PT3 PT3 merged to TS
|
|
0355+ 821D Merge
|
|
0356+ 821D assert 0 == StreamData.Type
|
|
0357+ 821D 11 BD 80 ld de,Streams
|
|
0358+ 8220 21 C8 80 ld hl,Streams+StreamData
|
|
0359+ 8223 .cycle
|
|
0360+ 8223 1A ld a,(de)
|
|
0361+ 8224 FE 04 cp StreamType.Unknown
|
|
0362+ 8226 C8 ret z
|
|
0363+ 8227 BE cp (hl)
|
|
0364+ 8228 28 07 jr z,.perform
|
|
0365+ 822A 5D ld e,l
|
|
0366+ 822B 7D ld a,l
|
|
0367+ 822C C6 0B add a,StreamData
|
|
0368+ 822E 6F ld l,a
|
|
0369+ 822F 18 F2 jr .cycle
|
|
0370+ 8231 .perform
|
|
0371+ 8231 FE 00 cp StreamType.PT3
|
|
0372+ 8233 20 15 jr nz,.generic
|
|
0373+ 8235 ;merge PT3 streams to TS
|
|
0374+ 8235 E5 D5 push hl,de
|
|
0375+ 8237 E5 D5 push hl,de
|
|
0376+ 8239 2C inc l
|
|
0377+ 823A 5E ld e,(hl)
|
|
0378+ 823B 2C inc l
|
|
0379+ 823C 56 ld d,(hl) ;data1
|
|
0380+ 823D E1 pop hl
|
|
0381+ 823E 2C inc l
|
|
0382+ 823F 7E ld a,(hl)
|
|
0383+ 8240 2C inc l
|
|
0384+ 8241 66 ld h,(hl)
|
|
0385+ 8242 6F ld l,a ;data2
|
|
0386+ 8243 DD E1 pop ix
|
|
0387+ 8245 CD B7 81 call FillTS
|
|
0388+ 8248 D1 E1 pop de,hl
|
|
0389+ 824A .generic
|
|
0390+ 824A ;for other types just take last one
|
|
0391+ 824A 06 0B ld b,StreamData
|
|
0392+ 824C .copyitems
|
|
0393+ 824C 7E ld a,(hl)
|
|
0394+ 824D 12 ld (de),a
|
|
0395+ 824E 2C inc l
|
|
0396+ 824F 1C inc e
|
|
0397+ 8250 10 FA djnz .copyitems
|
|
0398+ 8252 1A ld a,(de)
|
|
0399+ 8253 FE 04 cp StreamType.Unknown
|
|
0400+ 8255 20 F3 jr nz,.generic
|
|
0401+ 8257 18 8D jr MergeStreams
|
|
0402+ 8259
|
|
0403+ 8259 endmod
|
|
0404+ 8259
|
|
0405+ 8259 ifndef NoPrologue
|
|
0406+ 8259 define NoPrologue
|
|
0407+ 8259 endif
|
|
0408+ 8259
|
|
0409+ 8259 ifndef HaveFormatCheck
|
|
0410+ 8259 define HaveFormatCheck
|
|
0411+ 8259 endif
|
|
0412+ 8259
|
|
0413+ 8259 ifndef ONtfm
|
|
0414+ 8259 define ONtfm
|
|
0415+ 8259 endif
|
|
0416+ 8259
|
|
0417+ 8259 include "PTSPlay.asm"
|
|
0001++ 8259 ifndef _pts_asm_defined
|
|
0002++ 8259 define _pts_asm_defined
|
|
0003++ 8259
|
|
0004++ 8259 MODULE PTS
|
|
0005++ 8259
|
|
0006++ 8259 ;Universal PT2'n'PT3 Turbo Sound player for ZX Spectrum
|
|
0007++ 8259 ;(c)2004-2007 S.V.Bulba <vorobey@mail.khstu.ru>
|
|
0008++ 8259 ;Specially for AlCo
|
|
0009++ 8259 ;http://bulba.untergrund.net/ (http://bulba.at.kz/)
|
|
0010++ 8259
|
|
0011++ 8259 ;Release number
|
|
0012++ 8259 Release EQU "0"
|
|
0013++ 8259
|
|
0014++ 8259 ;Conditional assembly
|
|
0015++ 8259 ;1) Current position counters at (Vars1+0) and (Vars2+0)
|
|
0016++ 8259 CurPosCounter=0
|
|
0017++ 8259 ;2) Allow channels allocation bits at (SETUP)
|
|
0018++ 8259 ACBBAC=0
|
|
0019++ 8259 ;3) Allow loop checking and disabling
|
|
0020++ 8259 LoopChecker=0
|
|
0021++ 8259 ;4) Insert official identificator
|
|
0022++ 8259 Id=0
|
|
0023++ 8259 ;5) Set IY for correct return to ZX Basic
|
|
0024++ 8259 Basic=0
|
|
0025++ 8259
|
|
0026++ 8259 ;Features
|
|
0027++ 8259 ;--------
|
|
0028++ 8259 ;-Can be compiled at any address (i.e. no need rounding ORG
|
|
0029++ 8259 ; address).
|
|
0030++ 8259 ;-Variables (VARS) can be located at any address (not only after
|
|
0031++ 8259 ; code block).
|
|
0032++ 8259 ;-INIT subprogram checks PT3-module version and rightly
|
|
0033++ 8259 ; generates both note and volume tables outside of code block
|
|
0034++ 8259 ; (in VARS).
|
|
0035++ 8259 ;-Two portamento (spc. command 3xxx) algorithms (depending of
|
|
0036++ 8259 ; PT3 module version).
|
|
0037++ 8259 ;-New 1.XX and 2.XX special command behaviour (only for PT v3.7
|
|
0038++ 8259 ; and higher).
|
|
0039++ 8259 ;-Any Tempo value are accepted (including Tempo=1 and Tempo=2).
|
|
0040++ 8259 ;-TS modes: 2xPT3, 2xPT2 and PT v3.7 TS standard.
|
|
0041++ 8259 ;-Fully compatible with Ay_Emul PT3 and PT2 players codes.
|
|
0042++ 8259 ;-See also notes at the end of this source code.
|
|
0043++ 8259
|
|
0044++ 8259 ;Limitations
|
|
0045++ 8259 ;-----------
|
|
0046++ 8259 ;-Can run in RAM only (self-modified code is used).
|
|
0047++ 8259 ;-PT2 position list must be end by #FF marker only.
|
|
0048++ 8259
|
|
0049++ 8259 ;Warning!!! PLAY subprogram can crash if no module are loaded
|
|
0050++ 8259 ;into RAM or INIT subprogram was not called before.
|
|
0051++ 8259
|
|
0052++ 8259 ;Call MUTE or INIT one more time to mute sound after stopping
|
|
0053++ 8259 ;playing
|
|
0054++ 8259
|
|
0055++ 8259 TonA EQU 0
|
|
0056++ 8259 TonB EQU 2
|
|
0057++ 8259 TonC EQU 4
|
|
0058++ 8259 Noise EQU 6
|
|
0059++ 8259 Mixer EQU 7
|
|
0060++ 8259 AmplA EQU 8
|
|
0061++ 8259 AmplB EQU 9
|
|
0062++ 8259 AmplC EQU 10
|
|
0063++ 8259 Env EQU 11
|
|
0064++ 8259 EnvTp EQU 13
|
|
0065++ 8259
|
|
0066++ 8259 START
|
|
0067++ 8259
|
|
0068++ 8259 SETUP.NOLOOP EQU 1
|
|
0069++ 8259 SETUP.PT2 EQU 2
|
|
0070++ 8259 SETUP.ACB EQU 4
|
|
0071++ 8259 SETUP.BAC EQU 8
|
|
0072++ 8259 SETUP.TS02 EQU 16
|
|
0073++ 8259 SETUP.TSPT3 EQU 32
|
|
0074++ 8259
|
|
0075++ 8259 00 SETUP DB 0 ;set bit0, if you want to play without looping
|
|
0076++ 825A ;(optional);
|
|
0077++ 825A ;set bit1 for PT2 and reset for PT3 before
|
|
0078++ 825A ;calling INIT;
|
|
0079++ 825A ;bits2-3: %00-ABC, %01-ACB, %10-BAC (optional);
|
|
0080++ 825A ;bits4-5: %00-no TS, %01-2 modules TS, %10-
|
|
0081++ 825A ;autodetect PT3 TS-format by AlCo (PT 3.7+);
|
|
0082++ 825A ;Remark: old PT3 TS-format by AlCo (PT 3.6) is not
|
|
0083++ 825A ;documented and must be converted to new standard.
|
|
0084++ 825A ;bit6 is set each time, when loop point of 2nd TS
|
|
0085++ 825A ;module is passed (optional).
|
|
0086++ 825A ;bit7 is set each time, when loop point of 1st TS
|
|
0087++ 825A ;or of single module is passed (optional).
|
|
0088++ 825A
|
|
0089++ 825A ;Identifier
|
|
0090++ 825A IF Id
|
|
0091++ 825A~ DB "=UniPT2/PT3/TS-Player r.",Release,"="
|
|
0092++ 825A ENDIF
|
|
0093++ 825A
|
|
0094++ 825A IF LoopChecker
|
|
0095++ 825A~ CHECKLP LD HL,SETUP
|
|
0096++ 825A~ BIT 0,(IY-100+VRS.ModNum)
|
|
0097++ 825A~ JR Z,CHL1
|
|
0098++ 825A~ SET 6,(HL)
|
|
0099++ 825A~ JR CHL2
|
|
0100++ 825A~ CHL1 SET 7,(HL)
|
|
0101++ 825A~ CHL2 BIT 0,(HL)
|
|
0102++ 825A~ RET Z
|
|
0103++ 825A~ POP HL
|
|
0104++ 825A~ INC (IY-100+VRS.DelyCnt)
|
|
0105++ 825A~ INC (IY-100+VRS.ChanA+CHP.NtSkCn)
|
|
0106++ 825A~ XOR A
|
|
0107++ 825A~ LD (IY-100+VRS.AYREGS+AmplA),A
|
|
0108++ 825A~ LD (IY-100+VRS.AYREGS+AmplB),A
|
|
0109++ 825A~ LD (IY-100+VRS.AYREGS+AmplC),A
|
|
0110++ 825A~ RET
|
|
0111++ 825A ENDIF
|
|
0112++ 825A
|
|
0113++ 825A AF MUTE XOR A
|
|
0114++ 825B 67 LD H,A
|
|
0115++ 825C 6F LD L,A
|
|
0116++ 825D 32 EE 8B LD (VARS1+VRS.AYREGS+AmplA),A
|
|
0117++ 8260 22 EF 8B LD (VARS1+VRS.AYREGS+AmplB),HL
|
|
0118++ 8263 32 75 8C LD (VARS2+VRS.AYREGS+AmplA),A
|
|
0119++ 8266 22 76 8C LD (VARS2+VRS.AYREGS+AmplB),HL
|
|
0120++ 8269 C3 9C 8A JP ROUT
|
|
0121++ 826C
|
|
0122++ 826C INIT
|
|
0123++ 826C ;HL - AddressOfModule
|
|
0124++ 826C ;DE - AddresOf2ndModule
|
|
0125++ 826C ;A - mode
|
|
0126++ 826C D5 PUSH DE
|
|
0127++ 826D E5 PUSH HL
|
|
0128++ 826E 21 6C 8B LD HL,VARS
|
|
0129++ 8271 36 00 LD (HL),0
|
|
0130++ 8273 11 6D 8B LD DE,VARS+1
|
|
0131++ 8276 01 0E 01 LD BC,VAR0END-VARS-1
|
|
0132++ 8279 ED B0 LDIR
|
|
0133++ 827B 23 INC HL
|
|
0134++ 827C 22 CF 8B LD (VARS1+VRS.AdInPtA),HL ;ptr to zero
|
|
0135++ 827F 22 56 8C LD (VARS2+VRS.AdInPtA),HL
|
|
0136++ 8282
|
|
0137++ 8282 E1 POP HL
|
|
0138++ 8283 FD 21 D1 8B LD IY,VARS1+100
|
|
0139++ 8287 32 59 82 LD (SETUP),A
|
|
0140++ 828A E6 02 AND SETUP.PT2
|
|
0141++ 828C C2 15 83 JP NZ,I_PT2
|
|
0142++ 828F
|
|
0143++ 828F CD 5E 84 CALL INITPT3
|
|
0144++ 8292 21 18 1F LD HL,(e_-SamCnv-2)*256+#18
|
|
0145++ 8295 22 31 88 LD (SamCnv),HL
|
|
0146++ 8298 3E BA LD A,#BA
|
|
0147++ 829A 32 FC 87 LD (OrnCP),A
|
|
0148++ 829D 32 28 88 LD (SamCP),A
|
|
0149++ 82A0 3E 7B LD A,#7B
|
|
0150++ 82A2 32 FF 87 LD (OrnLD),A
|
|
0151++ 82A5 32 2B 88 LD (SamLD),A
|
|
0152++ 82A8 3E 87 LD A,#87
|
|
0153++ 82AA 32 22 88 LD (SamClc2),A
|
|
0154++ 82AD E1 POP HL
|
|
0155++ 82AE ;Use version and ton table of 1st module
|
|
0156++ 82AE DD 7E A9 LD A,(IX+13-100) ;EXTRACT VERSION NUMBER
|
|
0157++ 82B1 D6 30 SUB #30
|
|
0158++ 82B3 38 04 JR C,L20
|
|
0159++ 82B5 FE 0A CP 10
|
|
0160++ 82B7 38 02 JR C,L21
|
|
0161++ 82B9 3E 06 L20 LD A,6
|
|
0162++ 82BB 32 CF 86 L21 LD (Version),A
|
|
0163++ 82BE F5 PUSH AF ;VolTable version
|
|
0164++ 82BF FE 04 CP 4
|
|
0165++ 82C1 DD 7E FF LD A,(IX+99-100) ;TONE TABLE NUMBER
|
|
0166++ 82C4 17 RLA
|
|
0167++ 82C5 E6 07 AND 7
|
|
0168++ 82C7 F5 PUSH AF ;NoteTable number
|
|
0169++ 82C8
|
|
0170++ 82C8 FD 21 58 8C LD IY,VARS2+100
|
|
0171++ 82CC 3A 59 82 LD A,(SETUP)
|
|
0172++ 82CF E6 30 AND SETUP.TS02|SETUP.TSPT3
|
|
0173++ 82D1 28 37 JR Z,NOTS
|
|
0174++ 82D3 FE 10 CP SETUP.TS02
|
|
0175++ 82D5 28 27 JR Z,TwoPT3s
|
|
0176++ 82D7 3A CF 86 LD A,(Version)
|
|
0177++ 82DA FE 07 CP 7
|
|
0178++ 82DC 38 2C JR C,NOTS
|
|
0179++ 82DE DD 7E FE LD A,(IX+98-100) ;ALCO TS MARKER
|
|
0180++ 82E1 FE 20 CP #20
|
|
0181++ 82E3 28 25 JR Z,NOTS
|
|
0182++ 82E5 21 6D 8B LD HL,VARS1
|
|
0183++ 82E8 11 F4 8B LD DE,VARS2
|
|
0184++ 82EB 01 87 00 LD BC,VRS
|
|
0185++ 82EE ED B0 LDIR
|
|
0186++ 82F0 FD CB 9E CE SET 1,(IY-100+VRS.ModNum)
|
|
0187++ 82F4 4F LD C,A
|
|
0188++ 82F5 87 ADD A,A
|
|
0189++ 82F6 81 ADD A,C
|
|
0190++ 82F7 D6 02 SUB 2
|
|
0191++ 82F9 32 93 89 LD (TSSub),A
|
|
0192++ 82FC 18 03 JR AlCoTS_
|
|
0193++ 82FE CD 5E 84 TwoPT3s CALL INITPT3
|
|
0194++ 8301 3E 01 AlCoTS_ LD A,1
|
|
0195++ 8303 32 6C 8B LD (is_ts),A
|
|
0196++ 8306 FD CB 9E C6 SET 0,(IY-100+VRS.ModNum)
|
|
0197++ 830A
|
|
0198++ 830A 01 1B 86 NOTS LD BC,PT3PD
|
|
0199++ 830D 21 00 00 LD HL,0
|
|
0200++ 8310 11 34 8B LD DE,PT3EMPTYORN
|
|
0201++ 8313 18 48 JR INITCOMMON
|
|
0202++ 8315
|
|
0203++ 8315 CD 96 84 I_PT2 CALL INITPT2
|
|
0204++ 8318 21 CB 51 LD HL,#51CB
|
|
0205++ 831B 22 31 88 LD (SamCnv),HL
|
|
0206++ 831E 3E BB LD A,#BB
|
|
0207++ 8320 32 FC 87 LD (OrnCP),A
|
|
0208++ 8323 32 28 88 LD (SamCP),A
|
|
0209++ 8326 3E 7A LD A,#7A
|
|
0210++ 8328 32 FF 87 LD (OrnLD),A
|
|
0211++ 832B 32 2B 88 LD (SamLD),A
|
|
0212++ 832E 3E 80 LD A,#80
|
|
0213++ 8330 32 22 88 LD (SamClc2),A
|
|
0214++ 8333 E1 POP HL
|
|
0215++ 8334 3E 05 LD A,5
|
|
0216++ 8336 32 CF 86 LD (Version),A
|
|
0217++ 8339 F5 PUSH AF
|
|
0218++ 833A 3E 02 LD A,2
|
|
0219++ 833C F5 PUSH AF
|
|
0220++ 833D
|
|
0221++ 833D 3A 59 82 LD A,(SETUP)
|
|
0222++ 8340 E6 30 AND SETUP.TS02|SETUP.TSPT3
|
|
0223++ 8342 28 10 JR Z,NOTS2
|
|
0224++ 8344
|
|
0225++ 8344 FD 21 58 8C LD IY,VARS2+100
|
|
0226++ 8348 3E 01 LD A,1
|
|
0227++ 834A 32 6C 8B LD (is_ts),A
|
|
0228++ 834D FD CB 9E C6 SET 0,(IY-100+VRS.ModNum)
|
|
0229++ 8351 CD 96 84 CALL INITPT2
|
|
0230++ 8354
|
|
0231++ 8354 01 55 85 NOTS2 LD BC,PT2PD
|
|
0232++ 8357 21 87 86 LD HL,#8687
|
|
0233++ 835A 11 8A 8C LD DE,PT2EMPTYORN
|
|
0234++ 835D
|
|
0235++ 835D INITCOMMON
|
|
0236++ 835D
|
|
0237++ 835D IF Basic
|
|
0238++ 835D~ LD IY,#5C3A
|
|
0239++ 835D ENDIF
|
|
0240++ 835D
|
|
0241++ 835D ED 43 06 85 LD (PTDEC),BC
|
|
0242++ 8361 22 95 89 LD (PsCalc),HL
|
|
0243++ 8364 D5 PUSH DE
|
|
0244++ 8365
|
|
0245++ 8365 ;note table data depacker
|
|
0246++ 8365 ;(c) Ivan Roshin
|
|
0247++ 8365 11 37 8B LD DE,T_PACK
|
|
0248++ 8368 01 DC 8C LD BC,T1_+(2*49)-1
|
|
0249++ 836B 1A TP_0 LD A,(DE)
|
|
0250++ 836C 13 INC DE
|
|
0251++ 836D FE 1E CP 15*2
|
|
0252++ 836F 30 06 JR NC,TP_1
|
|
0253++ 8371 67 LD H,A
|
|
0254++ 8372 1A LD A,(DE)
|
|
0255++ 8373 6F LD L,A
|
|
0256++ 8374 13 INC DE
|
|
0257++ 8375 18 07 JR TP_2
|
|
0258++ 8377 D5 TP_1 PUSH DE
|
|
0259++ 8378 16 00 LD D,0
|
|
0260++ 837A 5F LD E,A
|
|
0261++ 837B 19 ADD HL,DE
|
|
0262++ 837C 19 ADD HL,DE
|
|
0263++ 837D D1 POP DE
|
|
0264++ 837E 7C TP_2 LD A,H
|
|
0265++ 837F 02 LD (BC),A
|
|
0266++ 8380 0B DEC BC
|
|
0267++ 8381 7D LD A,L
|
|
0268++ 8382 02 LD (BC),A
|
|
0269++ 8383 0B DEC BC
|
|
0270++ 8384 D6 F0 SUB (#F8*2)&255
|
|
0271++ 8386 20 E3 JR NZ,TP_0
|
|
0272++ 8388
|
|
0273++ 8388 3C INC A
|
|
0274++ 8389 32 DA 8B LD (VARS1+VRS.DelyCnt),A
|
|
0275++ 838C 32 61 8C LD (VARS2+VRS.DelyCnt),A
|
|
0276++ 838F 21 01 F0 LD HL,#F001 ;H - CHP.Volume, L - CHP.NtSkCn
|
|
0277++ 8392 22 8B 8B LD (VARS1+VRS.ChanA+CHP.NtSkCn),HL
|
|
0278++ 8395 22 A8 8B LD (VARS1+VRS.ChanB+CHP.NtSkCn),HL
|
|
0279++ 8398 22 C5 8B LD (VARS1+VRS.ChanC+CHP.NtSkCn),HL
|
|
0280++ 839B 22 12 8C LD (VARS2+VRS.ChanA+CHP.NtSkCn),HL
|
|
0281++ 839E 22 2F 8C LD (VARS2+VRS.ChanB+CHP.NtSkCn),HL
|
|
0282++ 83A1 22 4C 8C LD (VARS2+VRS.ChanC+CHP.NtSkCn),HL
|
|
0283++ 83A4 E1 POP HL
|
|
0284++ 83A5 22 7D 8B LD (VARS1+VRS.ChanA+CHP.OrnPtr),HL
|
|
0285++ 83A8 22 9A 8B LD (VARS1+VRS.ChanB+CHP.OrnPtr),HL
|
|
0286++ 83AB 22 B7 8B LD (VARS1+VRS.ChanC+CHP.OrnPtr),HL
|
|
0287++ 83AE 22 04 8C LD (VARS2+VRS.ChanA+CHP.OrnPtr),HL
|
|
0288++ 83B1 22 21 8C LD (VARS2+VRS.ChanB+CHP.OrnPtr),HL
|
|
0289++ 83B4 22 3E 8C LD (VARS2+VRS.ChanC+CHP.OrnPtr),HL
|
|
0290++ 83B7
|
|
0291++ 83B7 F1 POP AF
|
|
0292++ 83B8
|
|
0293++ 83B8 ;NoteTableCreator (c) Ivan Roshin
|
|
0294++ 83B8 ;A - NoteTableNumber*2+VersionForNoteTable
|
|
0295++ 83B8 ;(xx1b - 3.xx..3.4r, xx0b - 3.4x..3.6x..VTII1.0)
|
|
0296++ 83B8
|
|
0297++ 83B8 21 E4 8A LD HL,NT_DATA
|
|
0298++ 83BB 16 00 LD D,0
|
|
0299++ 83BD 87 ADD A,A
|
|
0300++ 83BE 5F LD E,A
|
|
0301++ 83BF 19 ADD HL,DE
|
|
0302++ 83C0 5E LD E,(HL)
|
|
0303++ 83C1 23 INC HL
|
|
0304++ 83C2 CB 3B SRL E
|
|
0305++ 83C4 9F SBC A,A
|
|
0306++ 83C5 E6 A7 AND #A7 ;#00 (NOP) or #A7 (AND A)
|
|
0307++ 83C7 32 EF 83 LD (L3),A
|
|
0308++ 83CA EB EX DE,HL
|
|
0309++ 83CB 01 7B 8C LD BC,T1_
|
|
0310++ 83CE 09 ADD HL,BC
|
|
0311++ 83CF
|
|
0312++ 83CF 1A LD A,(DE)
|
|
0313++ 83D0 C6 F4 ADD A,T_&255
|
|
0314++ 83D2 4F LD C,A
|
|
0315++ 83D3 CE 8A ADC A,T_/256
|
|
0316++ 83D5 91 SUB C
|
|
0317++ 83D6 47 LD B,A
|
|
0318++ 83D7 C5 PUSH BC
|
|
0319++ 83D8 11 6B 8D LD DE,NT_
|
|
0320++ 83DB D5 PUSH DE
|
|
0321++ 83DC
|
|
0322++ 83DC 06 0C LD B,12
|
|
0323++ 83DE C5 L1 PUSH BC
|
|
0324++ 83DF 4E LD C,(HL)
|
|
0325++ 83E0 23 INC HL
|
|
0326++ 83E1 E5 PUSH HL
|
|
0327++ 83E2 46 LD B,(HL)
|
|
0328++ 83E3
|
|
0329++ 83E3 D5 PUSH DE
|
|
0330++ 83E4 EB EX DE,HL
|
|
0331++ 83E5 11 17 00 LD DE,23
|
|
0332++ 83E8 DD 26 08 LD IXH,8
|
|
0333++ 83EB
|
|
0334++ 83EB CB 38 L2 SRL B
|
|
0335++ 83ED CB 19 RR C
|
|
0336++ 83EF 19 L3 DB #19 ;AND A or NOP
|
|
0337++ 83F0 79 LD A,C
|
|
0338++ 83F1 8A ADC A,D ;=ADC 0
|
|
0339++ 83F2 77 LD (HL),A
|
|
0340++ 83F3 23 INC HL
|
|
0341++ 83F4 78 LD A,B
|
|
0342++ 83F5 8A ADC A,D
|
|
0343++ 83F6 77 LD (HL),A
|
|
0344++ 83F7 19 ADD HL,DE
|
|
0345++ 83F8 DD 25 DEC IXH
|
|
0346++ 83FA 20 EF JR NZ,L2
|
|
0347++ 83FC
|
|
0348++ 83FC D1 POP DE
|
|
0349++ 83FD 13 INC DE
|
|
0350++ 83FE 13 INC DE
|
|
0351++ 83FF E1 POP HL
|
|
0352++ 8400 23 INC HL
|
|
0353++ 8401 C1 POP BC
|
|
0354++ 8402 10 DA DJNZ L1
|
|
0355++ 8404
|
|
0356++ 8404 E1 POP HL
|
|
0357++ 8405 D1 POP DE
|
|
0358++ 8406
|
|
0359++ 8406 7B LD A,E
|
|
0360++ 8407 FE 00 CP TCOLD_1&255
|
|
0361++ 8409 20 05 JR NZ,CORR_1
|
|
0362++ 840B 3E FD LD A,#FD
|
|
0363++ 840D 32 99 8D LD (NT_+#2E),A
|
|
0364++ 8410
|
|
0365++ 8410 1A CORR_1 LD A,(DE)
|
|
0366++ 8411 A7 AND A
|
|
0367++ 8412 28 11 JR Z,TC_EXIT
|
|
0368++ 8414 1F RRA
|
|
0369++ 8415 F5 PUSH AF
|
|
0370++ 8416 87 ADD A,A
|
|
0371++ 8417 4F LD C,A
|
|
0372++ 8418 09 ADD HL,BC
|
|
0373++ 8419 F1 POP AF
|
|
0374++ 841A 30 02 JR NC,CORR_2
|
|
0375++ 841C 35 DEC (HL)
|
|
0376++ 841D 35 DEC (HL)
|
|
0377++ 841E 34 CORR_2 INC (HL)
|
|
0378++ 841F A7 AND A
|
|
0379++ 8420 ED 42 SBC HL,BC
|
|
0380++ 8422 13 INC DE
|
|
0381++ 8423 18 EB JR CORR_1
|
|
0382++ 8425
|
|
0383++ 8425 TC_EXIT
|
|
0384++ 8425
|
|
0385++ 8425 F1 POP AF
|
|
0386++ 8426
|
|
0387++ 8426 ;VolTableCreator (c) Ivan Roshin
|
|
0388++ 8426 ;A - VersionForVolumeTable (0..4 - 3.xx..3.4x;
|
|
0389++ 8426 ;5.. - 2.x,3.5x..3.6x..VTII1.0)
|
|
0390++ 8426
|
|
0391++ 8426 FE 05 CP 5
|
|
0392++ 8428 21 11 00 LD HL,#11
|
|
0393++ 842B 54 LD D,H
|
|
0394++ 842C 5C LD E,H
|
|
0395++ 842D 3E 17 LD A,#17
|
|
0396++ 842F 30 03 JR NC,M1
|
|
0397++ 8431 2D DEC L
|
|
0398++ 8432 5D LD E,L
|
|
0399++ 8433 AF XOR A
|
|
0400++ 8434 32 45 84 M1 LD (M2),A
|
|
0401++ 8437
|
|
0402++ 8437 DD 21 7B 8C LD IX,VT_+16
|
|
0403++ 843B
|
|
0404++ 843B 0E 0F LD C,#F
|
|
0405++ 843D E5 INITV2 PUSH HL
|
|
0406++ 843E
|
|
0407++ 843E 19 ADD HL,DE
|
|
0408++ 843F EB EX DE,HL
|
|
0409++ 8440 ED 62 SBC HL,HL
|
|
0410++ 8442
|
|
0411++ 8442 06 10 LD B,#10
|
|
0412++ 8444 7D INITV1 LD A,L
|
|
0413++ 8445 7D M2 DB #7D
|
|
0414++ 8446 7C LD A,H
|
|
0415++ 8447 CE 00 ADC A,0
|
|
0416++ 8449 DD 77 00 LD (IX),A
|
|
0417++ 844C DD 23 INC IX
|
|
0418++ 844E 19 ADD HL,DE
|
|
0419++ 844F 10 F3 DJNZ INITV1
|
|
0420++ 8451
|
|
0421++ 8451 E1 POP HL
|
|
0422++ 8452 7B LD A,E
|
|
0423++ 8453 FE 77 CP #77
|
|
0424++ 8455 20 01 JR NZ,M3
|
|
0425++ 8457 1C INC E
|
|
0426++ 8458 0D M3 DEC C
|
|
0427++ 8459 20 E2 JR NZ,INITV2
|
|
0428++ 845B
|
|
0429++ 845B C3 9C 8A JP ROUT
|
|
0430++ 845E
|
|
0431++ 845E CD D1 84 INITPT3 CALL SETMDAD
|
|
0432++ 8461 E5 PUSH HL
|
|
0433++ 8462 11 64 00 LD DE,100
|
|
0434++ 8465 19 ADD HL,DE
|
|
0435++ 8466 7E LD A,(HL)
|
|
0436++ 8467 FD 77 08 LD (IY-100+VRS.Delay),A
|
|
0437++ 846A E5 PUSH HL
|
|
0438++ 846B DD E1 POP IX
|
|
0439++ 846D 19 ADD HL,DE
|
|
0440++ 846E CD DF 84 CALL SETCPPT
|
|
0441++ 8471 DD 5E 02 LD E,(IX+102-100)
|
|
0442++ 8474 23 INC HL
|
|
0443++ 8475
|
|
0444++ 8475 IF CurPosCounter
|
|
0445++ 8475~ LD (IY-100+VRS.PosSub),L
|
|
0446++ 8475 ENDIF
|
|
0447++ 8475
|
|
0448++ 8475 19 ADD HL,DE
|
|
0449++ 8476 CD E6 84 CALL SETLPPT
|
|
0450++ 8479 D1 POP DE
|
|
0451++ 847A DD 6E 03 LD L,(IX+103-100)
|
|
0452++ 847D DD 66 04 LD H,(IX+104-100)
|
|
0453++ 8480 19 ADD HL,DE
|
|
0454++ 8481 CD CA 84 CALL SETPTPT
|
|
0455++ 8484 21 A9 00 LD HL,169
|
|
0456++ 8487 19 ADD HL,DE
|
|
0457++ 8488 CD D8 84 CALL SETORPT
|
|
0458++ 848B 21 69 00 LD HL,105
|
|
0459++ 848E 19 ADD HL,DE
|
|
0460++ 848F
|
|
0461++ 848F FD 75 FA SETSMPT LD (IY-100+VRS.SamPtrs),L
|
|
0462++ 8492 FD 74 FB LD (IY-100+VRS.SamPtrs+1),H
|
|
0463++ 8495 C9 RET
|
|
0464++ 8496
|
|
0465++ 8496 7E INITPT2 LD A,(HL)
|
|
0466++ 8497 FD 77 08 LD (IY-100+VRS.Delay),A
|
|
0467++ 849A E5 PUSH HL
|
|
0468++ 849B E5 PUSH HL
|
|
0469++ 849C E5 PUSH HL
|
|
0470++ 849D 23 INC HL
|
|
0471++ 849E 23 INC HL
|
|
0472++ 849F 7E LD A,(HL)
|
|
0473++ 84A0 23 INC HL
|
|
0474++ 84A1 CD 8F 84 CALL SETSMPT
|
|
0475++ 84A4 5E LD E,(HL)
|
|
0476++ 84A5 23 INC HL
|
|
0477++ 84A6 56 LD D,(HL)
|
|
0478++ 84A7 E1 POP HL
|
|
0479++ 84A8 A7 AND A
|
|
0480++ 84A9 ED 52 SBC HL,DE
|
|
0481++ 84AB CD D1 84 CALL SETMDAD
|
|
0482++ 84AE E1 POP HL
|
|
0483++ 84AF 11 43 00 LD DE,67
|
|
0484++ 84B2 19 ADD HL,DE
|
|
0485++ 84B3 CD D8 84 CALL SETORPT
|
|
0486++ 84B6 1E 20 LD E,32
|
|
0487++ 84B8 19 ADD HL,DE
|
|
0488++ 84B9 4E LD C,(HL)
|
|
0489++ 84BA 23 INC HL
|
|
0490++ 84BB 46 LD B,(HL)
|
|
0491++ 84BC 1E 1E LD E,30
|
|
0492++ 84BE 19 ADD HL,DE
|
|
0493++ 84BF CD DF 84 CALL SETCPPT
|
|
0494++ 84C2 5F LD E,A
|
|
0495++ 84C3 23 INC HL
|
|
0496++ 84C4
|
|
0497++ 84C4 IF CurPosCounter
|
|
0498++ 84C4~ LD (IY-100+VRS.PosSub),L
|
|
0499++ 84C4 ENDIF
|
|
0500++ 84C4
|
|
0501++ 84C4 19 ADD HL,DE
|
|
0502++ 84C5 CD E6 84 CALL SETLPPT
|
|
0503++ 84C8 E1 POP HL
|
|
0504++ 84C9 09 ADD HL,BC
|
|
0505++ 84CA
|
|
0506++ 84CA FD 75 FC SETPTPT LD (IY-100+VRS.PatsPtr),L
|
|
0507++ 84CD FD 74 FD LD (IY-100+VRS.PatsPtr+1),H
|
|
0508++ 84D0 C9 RET
|
|
0509++ 84D1
|
|
0510++ 84D1 FD 75 F6 SETMDAD LD (IY-100+VRS.MODADDR),L
|
|
0511++ 84D4 FD 74 F7 LD (IY-100+VRS.MODADDR+1),H
|
|
0512++ 84D7 C9 RET
|
|
0513++ 84D8
|
|
0514++ 84D8 FD 75 F8 SETORPT LD (IY-100+VRS.OrnPtrs),L
|
|
0515++ 84DB FD 74 F9 LD (IY-100+VRS.OrnPtrs+1),H
|
|
0516++ 84DE C9 RET
|
|
0517++ 84DF
|
|
0518++ 84DF FD 75 04 SETCPPT LD (IY-100+VRS.CrPsPtr),L
|
|
0519++ 84E2 FD 74 05 LD (IY-100+VRS.CrPsPtr+1),H
|
|
0520++ 84E5 C9 RET
|
|
0521++ 84E6
|
|
0522++ 84E6 FD 75 06 SETLPPT LD (IY-100+VRS.LPosPtr),L
|
|
0523++ 84E9 FD 74 07 LD (IY-100+VRS.LPosPtr+1),H
|
|
0524++ 84EC C9 RET
|
|
0525++ 84ED
|
|
0526++ 84ED FD 75 13 SETENBS LD (IY-100+VRS.EnvBase),L
|
|
0527++ 84F0 FD 74 14 LD (IY-100+VRS.EnvBase+1),H
|
|
0528++ 84F3 C9 RET
|
|
0529++ 84F4
|
|
0530++ 84F4 FD 75 0C SETESLD LD (IY-100+VRS.CurESld),L
|
|
0531++ 84F7 FD 74 0D LD (IY-100+VRS.CurESld+1),H
|
|
0532++ 84FA C9 RET
|
|
0533++ 84FB
|
|
0534++ 84FB FD E5 GETIX PUSH IY
|
|
0535++ 84FD DD E1 POP IX
|
|
0536++ 84FF DD 19 ADD IX,DE
|
|
0537++ 8501 C9 RET
|
|
0538++ 8502
|
|
0539++ 8502 CD FB 84 PTDECOD CALL GETIX
|
|
0540++ 8505 PTDEC EQU $+1
|
|
0541++ 8505 C3 C3 C3 JP #C3C3
|
|
0542++ 8508
|
|
0543++ 8508 ;PT2 pattern decoder
|
|
0544++ 8508 CD 9E 87 PD2_SAM CALL SETSAM
|
|
0545++ 850B 18 4A JR PD2_LOOP
|
|
0546++ 850D
|
|
0547++ 850D DD 77 08 PD2_EOff LD (IX-12+CHP.Env_En),A
|
|
0548++ 8510 18 45 JR PD2_LOOP
|
|
0549++ 8512
|
|
0550++ 8512 DD 36 08 10 PD2_ENV LD (IX-12+CHP.Env_En),16
|
|
0551++ 8516 FD 77 22 LD (IY-100+VRS.AYREGS+EnvTp),A
|
|
0552++ 8519 0A LD A,(BC)
|
|
0553++ 851A 03 INC BC
|
|
0554++ 851B 6F LD L,A
|
|
0555++ 851C 0A LD A,(BC)
|
|
0556++ 851D 03 INC BC
|
|
0557++ 851E 67 LD H,A
|
|
0558++ 851F CD ED 84 CALL SETENBS
|
|
0559++ 8522 18 33 JR PD2_LOOP
|
|
0560++ 8524
|
|
0561++ 8524 CD 7F 87 PD2_ORN CALL SETORN
|
|
0562++ 8527 18 2E JR PD2_LOOP
|
|
0563++ 8529
|
|
0564++ 8529 3C PD2_SKIP INC A
|
|
0565++ 852A DD 77 05 LD (IX-12+CHP.NNtSkp),A
|
|
0566++ 852D 18 28 JR PD2_LOOP
|
|
0567++ 852F
|
|
0568++ 852F 0F PD2_VOL RRCA
|
|
0569++ 8530 0F RRCA
|
|
0570++ 8531 0F RRCA
|
|
0571++ 8532 0F RRCA
|
|
0572++ 8533 DD 77 10 LD (IX-12+CHP.Volume),A
|
|
0573++ 8536 18 1F JR PD2_LOOP
|
|
0574++ 8538
|
|
0575++ 8538 CD 4F 87 PD2_DEL CALL C_DELAY
|
|
0576++ 853B 18 1A JR PD2_LOOP
|
|
0577++ 853D
|
|
0578++ 853D DD CB 09 D6 PD2_GLIS SET 2,(IX-12+CHP.Flags)
|
|
0579++ 8541 3C INC A
|
|
0580++ 8542 DD 77 0A LD (IX-12+CHP.TnSlDl),A
|
|
0581++ 8545 DD 77 F9 LD (IX-12+CHP.TSlCnt),A
|
|
0582++ 8548 0A LD A,(BC)
|
|
0583++ 8549 03 INC BC
|
|
0584++ 854A DD 77 0B LD (IX-12+CHP.TSlStp),A
|
|
0585++ 854D 87 ADD A,A
|
|
0586++ 854E 9F SBC A,A
|
|
0587++ 854F DD 77 0C LD (IX-12+CHP.TSlStp+1),A
|
|
0588++ 8552 37 SCF
|
|
0589++ 8553 18 01 JR PD2_LP2
|
|
0590++ 8555
|
|
0591++ 8555 A7 PT2PD AND A
|
|
0592++ 8556
|
|
0593++ 8556 08 PD2_LP2 EX AF,AF'
|
|
0594++ 8557
|
|
0595++ 8557 0A PD2_LOOP LD A,(BC)
|
|
0596++ 8558 03 INC BC
|
|
0597++ 8559 C6 20 ADD A,#20
|
|
0598++ 855B 28 3F JR Z,PD2_REL
|
|
0599++ 855D 38 A9 JR C,PD2_SAM
|
|
0600++ 855F C6 60 ADD A,96
|
|
0601++ 8561 38 3E JR C,PD2_NOTE
|
|
0602++ 8563 3C INC A
|
|
0603++ 8564 28 A7 JR Z,PD2_EOff
|
|
0604++ 8566 C6 0F ADD A,15
|
|
0605++ 8568 CA 7E 86 JP Z,PD_FIN
|
|
0606++ 856B 38 A5 JR C,PD2_ENV
|
|
0607++ 856D C6 10 ADD A,#10
|
|
0608++ 856F 38 B3 JR C,PD2_ORN
|
|
0609++ 8571 C6 40 ADD A,#40
|
|
0610++ 8573 38 B4 JR C,PD2_SKIP
|
|
0611++ 8575 C6 10 ADD A,#10
|
|
0612++ 8577 38 B6 JR C,PD2_VOL
|
|
0613++ 8579 3C INC A
|
|
0614++ 857A 28 BC JR Z,PD2_DEL
|
|
0615++ 857C 3C INC A
|
|
0616++ 857D 28 BE JR Z,PD2_GLIS
|
|
0617++ 857F 3C INC A
|
|
0618++ 8580 28 0A JR Z,PD2_PORT
|
|
0619++ 8582 3C INC A
|
|
0620++ 8583 28 12 JR Z,PD2_STOP
|
|
0621++ 8585 0A LD A,(BC)
|
|
0622++ 8586 03 INC BC
|
|
0623++ 8587 DD 77 F7 LD (IX-12+CHP.CrNsSl),A
|
|
0624++ 858A 18 CB JR PD2_LOOP
|
|
0625++ 858C
|
|
0626++ 858C DD CB 09 96 PD2_PORT RES 2,(IX-12+CHP.Flags)
|
|
0627++ 8590 0A LD A,(BC)
|
|
0628++ 8591 03 INC BC
|
|
0629++ 8592 03 INC BC ;ignoring precalc delta to right sound
|
|
0630++ 8593 03 INC BC
|
|
0631++ 8594 37 SCF
|
|
0632++ 8595 18 BF JR PD2_LP2
|
|
0633++ 8597
|
|
0634++ 8597 DD 77 F9 PD2_STOP LD (IX-12+CHP.TSlCnt),A
|
|
0635++ 859A 18 BB JR PD2_LOOP
|
|
0636++ 859C
|
|
0637++ 859C DD 77 09 PD2_REL LD (IX-12+CHP.Flags),A
|
|
0638++ 859F 18 2C JR PD2_EXIT
|
|
0639++ 85A1
|
|
0640++ 85A1 6F PD2_NOTE LD L,A
|
|
0641++ 85A2 DD 7E 06 LD A,(IX-12+CHP.Note)
|
|
0642++ 85A5 32 B8 86 LD (PrNote+1),A
|
|
0643++ 85A8 DD 75 06 LD (IX-12+CHP.Note),L
|
|
0644++ 85AB AF XOR A
|
|
0645++ 85AC DD 77 F9 LD (IX-12+CHP.TSlCnt),A
|
|
0646++ 85AF DD CB 09 C6 SET 0,(IX-12+CHP.Flags)
|
|
0647++ 85B3 08 EX AF,AF'
|
|
0648++ 85B4 30 16 JR NC,NOGLIS2
|
|
0649++ 85B6 DD CB 09 56 BIT 2,(IX-12+CHP.Flags)
|
|
0650++ 85BA 20 0C JR NZ,NOPORT2
|
|
0651++ 85BC 32 DE 86 LD (LoStep),A
|
|
0652++ 85BF 87 ADD A,A
|
|
0653++ 85C0 9F SBC A,A
|
|
0654++ 85C1 08 EX AF,AF'
|
|
0655++ 85C2 67 LD H,A
|
|
0656++ 85C3 6F LD L,A
|
|
0657++ 85C4 3C INC A
|
|
0658++ 85C5 CD 99 86 CALL SETPORT
|
|
0659++ 85C8 DD 36 F9 01 NOPORT2 LD (IX-12+CHP.TSlCnt),1
|
|
0660++ 85CC AF NOGLIS2 XOR A
|
|
0661++ 85CD
|
|
0662++ 85CD
|
|
0663++ 85CD DD 77 F5 PD2_EXIT LD (IX-12+CHP.PsInSm),A
|
|
0664++ 85D0 DD 77 F4 LD (IX-12+CHP.PsInOr),A
|
|
0665++ 85D3 DD 77 FA LD (IX-12+CHP.CrTnSl),A
|
|
0666++ 85D6 DD 77 FB LD (IX-12+CHP.CrTnSl+1),A
|
|
0667++ 85D9 C3 7E 86 JP PD_FIN
|
|
0668++ 85DC
|
|
0669++ 85DC ;PT3 pattern decoder
|
|
0670++ 85DC DD 36 08 00 PD_OrSm LD (IX-12+CHP.Env_En),0
|
|
0671++ 85E0 CD 7F 87 CALL SETORN
|
|
0672++ 85E3 0A PD_SAM_ LD A,(BC)
|
|
0673++ 85E4 03 INC BC
|
|
0674++ 85E5 0F RRCA
|
|
0675++ 85E6
|
|
0676++ 85E6 CD 9E 87 PD_SAM CALL SETSAM
|
|
0677++ 85E9 18 3F JR PD_LOOP
|
|
0678++ 85EB
|
|
0679++ 85EB 0F PD_VOL RRCA
|
|
0680++ 85EC 0F RRCA
|
|
0681++ 85ED 0F RRCA
|
|
0682++ 85EE 0F RRCA
|
|
0683++ 85EF DD 77 10 LD (IX-12+CHP.Volume),A
|
|
0684++ 85F2 18 39 JR PD_LP2
|
|
0685++ 85F4
|
|
0686++ 85F4 DD 77 08 PD_EOff LD (IX-12+CHP.Env_En),A
|
|
0687++ 85F7 DD 77 F4 LD (IX-12+CHP.PsInOr),A
|
|
0688++ 85FA 18 31 JR PD_LP2
|
|
0689++ 85FC
|
|
0690++ 85FC 3D PD_SorE DEC A
|
|
0691++ 85FD 20 07 JR NZ,PD_ENV
|
|
0692++ 85FF 0A LD A,(BC)
|
|
0693++ 8600 03 INC BC
|
|
0694++ 8601 DD 77 05 LD (IX-12+CHP.NNtSkp),A
|
|
0695++ 8604 18 27 JR PD_LP2
|
|
0696++ 8606
|
|
0697++ 8606 CD 64 87 PD_ENV CALL SETENV
|
|
0698++ 8609 18 22 JR PD_LP2
|
|
0699++ 860B
|
|
0700++ 860B CD 7F 87 PD_ORN CALL SETORN
|
|
0701++ 860E 18 1A JR PD_LOOP
|
|
0702++ 8610
|
|
0703++ 8610 DD 77 08 PD_ESAM LD (IX-12+CHP.Env_En),A
|
|
0704++ 8613 DD 77 F4 LD (IX-12+CHP.PsInOr),A
|
|
0705++ 8616 C4 64 87 CALL NZ,SETENV
|
|
0706++ 8619 18 C8 JR PD_SAM_
|
|
0707++ 861B
|
|
0708++ 861B DD 7E 06 PT3PD LD A,(IX-12+CHP.Note)
|
|
0709++ 861E 32 B8 86 LD (PrNote+1),A
|
|
0710++ 8621 DD 6E FA LD L,(IX-12+CHP.CrTnSl)
|
|
0711++ 8624 DD 66 FB LD H,(IX-12+CHP.CrTnSl+1)
|
|
0712++ 8627 22 D5 86 LD (PrSlide+1),HL
|
|
0713++ 862A
|
|
0714++ 862A 11 10 20 PD_LOOP LD DE,#2010
|
|
0715++ 862D 0A PD_LP2 LD A,(BC)
|
|
0716++ 862E 03 INC BC
|
|
0717++ 862F 83 ADD A,E
|
|
0718++ 8630 38 AA JR C,PD_OrSm
|
|
0719++ 8632 82 ADD A,D
|
|
0720++ 8633 28 49 JR Z,PD_FIN
|
|
0721++ 8635 38 AF JR C,PD_SAM
|
|
0722++ 8637 83 ADD A,E
|
|
0723++ 8638 28 25 JR Z,PD_REL
|
|
0724++ 863A 38 AF JR C,PD_VOL
|
|
0725++ 863C 83 ADD A,E
|
|
0726++ 863D 28 B5 JR Z,PD_EOff
|
|
0727++ 863F 38 BB JR C,PD_SorE
|
|
0728++ 8641 C6 60 ADD A,96
|
|
0729++ 8643 38 20 JR C,PD_NOTE
|
|
0730++ 8645 83 ADD A,E
|
|
0731++ 8646 38 C3 JR C,PD_ORN
|
|
0732++ 8648 82 ADD A,D
|
|
0733++ 8649 38 0F JR C,PD_NOIS
|
|
0734++ 864B 83 ADD A,E
|
|
0735++ 864C 38 C2 JR C,PD_ESAM
|
|
0736++ 864E 87 ADD A,A
|
|
0737++ 864F 5F LD E,A
|
|
0738++ 8650 21 DA 66 LD HL,(SPCCOMS+#FF20-#2000)&65535
|
|
0739++ 8653 19 ADD HL,DE
|
|
0740++ 8654 5E LD E,(HL)
|
|
0741++ 8655 23 INC HL
|
|
0742++ 8656 56 LD D,(HL)
|
|
0743++ 8657 D5 PUSH DE
|
|
0744++ 8658 18 D0 JR PD_LOOP
|
|
0745++ 865A
|
|
0746++ 865A FD 77 10 PD_NOIS LD (IY-100+VRS.Ns_Base),A
|
|
0747++ 865D 18 CE JR PD_LP2
|
|
0748++ 865F
|
|
0749++ 865F DD CB 09 86 PD_REL RES 0,(IX-12+CHP.Flags)
|
|
0750++ 8663 18 08 JR PD_RES
|
|
0751++ 8665
|
|
0752++ 8665 DD 77 06 PD_NOTE LD (IX-12+CHP.Note),A
|
|
0753++ 8668 DD CB 09 C6 SET 0,(IX-12+CHP.Flags)
|
|
0754++ 866C AF XOR A
|
|
0755++ 866D
|
|
0756++ 866D ED 73 7C 86 PD_RES LD (PDSP_+1),SP
|
|
0757++ 8671 DD F9 LD SP,IX
|
|
0758++ 8673 67 LD H,A
|
|
0759++ 8674 6F LD L,A
|
|
0760++ 8675 E5 PUSH HL
|
|
0761++ 8676 E5 PUSH HL
|
|
0762++ 8677 E5 PUSH HL
|
|
0763++ 8678 E5 PUSH HL
|
|
0764++ 8679 E5 PUSH HL
|
|
0765++ 867A E5 PUSH HL
|
|
0766++ 867B 31 31 31 PDSP_ LD SP,#3131
|
|
0767++ 867E
|
|
0768++ 867E DD 7E 05 PD_FIN LD A,(IX-12+CHP.NNtSkp)
|
|
0769++ 8681 DD 77 0F LD (IX-12+CHP.NtSkCn),A
|
|
0770++ 8684 C9 RET
|
|
0771++ 8685
|
|
0772++ 8685 0A C_PORTM LD A,(BC)
|
|
0773++ 8686 03 INC BC
|
|
0774++ 8687 ;SKIP PRECALCULATED TONE DELTA (BECAUSE
|
|
0775++ 8687 ;CANNOT BE RIGHT AFTER PT3 COMPILATION)
|
|
0776++ 8687 03 INC BC
|
|
0777++ 8688 03 INC BC
|
|
0778++ 8689 08 EX AF,AF'
|
|
0779++ 868A 0A LD A,(BC) ;SIGNED TONE STEP
|
|
0780++ 868B 03 INC BC
|
|
0781++ 868C 32 DE 86 LD (LoStep),A
|
|
0782++ 868F 0A LD A,(BC)
|
|
0783++ 8690 03 INC BC
|
|
0784++ 8691 A7 AND A
|
|
0785++ 8692 08 EX AF,AF'
|
|
0786++ 8693 DD 6E FA LD L,(IX-12+CHP.CrTnSl)
|
|
0787++ 8696 DD 66 FB LD H,(IX-12+CHP.CrTnSl+1)
|
|
0788++ 8699
|
|
0789++ 8699 ;Set portamento variables
|
|
0790++ 8699 ;A - Delay; A' - Hi(Step); ZF' - (A'=0); HL - CrTnSl
|
|
0791++ 8699
|
|
0792++ 8699 DD CB 09 96 SETPORT RES 2,(IX-12+CHP.Flags)
|
|
0793++ 869D DD 77 0A LD (IX-12+CHP.TnSlDl),A
|
|
0794++ 86A0 DD 77 F9 LD (IX-12+CHP.TSlCnt),A
|
|
0795++ 86A3 E5 PUSH HL
|
|
0796++ 86A4 11 6B 8D LD DE,NT_
|
|
0797++ 86A7 DD 7E 06 LD A,(IX-12+CHP.Note)
|
|
0798++ 86AA DD 77 07 LD (IX-12+CHP.SlToNt),A
|
|
0799++ 86AD 87 ADD A,A
|
|
0800++ 86AE 6F LD L,A
|
|
0801++ 86AF 26 00 LD H,0
|
|
0802++ 86B1 19 ADD HL,DE
|
|
0803++ 86B2 7E LD A,(HL)
|
|
0804++ 86B3 23 INC HL
|
|
0805++ 86B4 66 LD H,(HL)
|
|
0806++ 86B5 6F LD L,A
|
|
0807++ 86B6 E5 PUSH HL
|
|
0808++ 86B7 3E 3E PrNote LD A,#3E
|
|
0809++ 86B9 DD 77 06 LD (IX-12+CHP.Note),A
|
|
0810++ 86BC 87 ADD A,A
|
|
0811++ 86BD 6F LD L,A
|
|
0812++ 86BE 26 00 LD H,0
|
|
0813++ 86C0 19 ADD HL,DE
|
|
0814++ 86C1 5E LD E,(HL)
|
|
0815++ 86C2 23 INC HL
|
|
0816++ 86C3 56 LD D,(HL)
|
|
0817++ 86C4 E1 POP HL
|
|
0818++ 86C5 ED 52 SBC HL,DE
|
|
0819++ 86C7 DD 75 0D LD (IX-12+CHP.TnDelt),L
|
|
0820++ 86CA DD 74 0E LD (IX-12+CHP.TnDelt+1),H
|
|
0821++ 86CD D1 POP DE
|
|
0822++ 86CE Version EQU $+1
|
|
0823++ 86CE 3E 3E LD A,#3E
|
|
0824++ 86D0 FE 06 CP 6
|
|
0825++ 86D2 38 09 JR C,OLDPRTM ;Old 3xxx for PT v3.5-
|
|
0826++ 86D4 11 11 11 PrSlide LD DE,#1111
|
|
0827++ 86D7 DD 73 FA LD (IX-12+CHP.CrTnSl),E
|
|
0828++ 86DA DD 72 FB LD (IX-12+CHP.CrTnSl+1),D
|
|
0829++ 86DD LoStep EQU $+1
|
|
0830++ 86DD 3E 3E OLDPRTM LD A,#3E
|
|
0831++ 86DF 08 EX AF,AF'
|
|
0832++ 86E0 28 01 JR Z,NOSIG
|
|
0833++ 86E2 EB EX DE,HL
|
|
0834++ 86E3 ED 52 NOSIG SBC HL,DE
|
|
0835++ 86E5 F2 ED 86 JP P,SET_STP
|
|
0836++ 86E8 2F CPL
|
|
0837++ 86E9 08 EX AF,AF'
|
|
0838++ 86EA ED 44 NEG
|
|
0839++ 86EC 08 EX AF,AF'
|
|
0840++ 86ED DD 77 0C SET_STP LD (IX-12+CHP.TSlStp+1),A
|
|
0841++ 86F0 08 EX AF,AF'
|
|
0842++ 86F1 DD 77 0B LD (IX-12+CHP.TSlStp),A
|
|
0843++ 86F4 DD 36 FE 00 LD (IX-12+CHP.COnOff),0
|
|
0844++ 86F8 C9 RET
|
|
0845++ 86F9
|
|
0846++ 86F9 DD CB 09 D6 C_GLISS SET 2,(IX-12+CHP.Flags)
|
|
0847++ 86FD 0A LD A,(BC)
|
|
0848++ 86FE 03 INC BC
|
|
0849++ 86FF DD 77 0A LD (IX-12+CHP.TnSlDl),A
|
|
0850++ 8702 A7 AND A
|
|
0851++ 8703 20 07 JR NZ,GL36
|
|
0852++ 8705 3A CF 86 LD A,(Version) ;AlCo PT3.7+
|
|
0853++ 8708 FE 07 CP 7
|
|
0854++ 870A 9F SBC A,A
|
|
0855++ 870B 3C INC A
|
|
0856++ 870C DD 77 F9 GL36 LD (IX-12+CHP.TSlCnt),A
|
|
0857++ 870F 0A LD A,(BC)
|
|
0858++ 8710 03 INC BC
|
|
0859++ 8711 08 EX AF,AF'
|
|
0860++ 8712 0A LD A,(BC)
|
|
0861++ 8713 03 INC BC
|
|
0862++ 8714 18 D7 JR SET_STP
|
|
0863++ 8716
|
|
0864++ 8716 0A C_SMPOS LD A,(BC)
|
|
0865++ 8717 03 INC BC
|
|
0866++ 8718 DD 77 F5 LD (IX-12+CHP.PsInSm),A
|
|
0867++ 871B C9 RET
|
|
0868++ 871C
|
|
0869++ 871C 0A C_ORPOS LD A,(BC)
|
|
0870++ 871D 03 INC BC
|
|
0871++ 871E DD 77 F4 LD (IX-12+CHP.PsInOr),A
|
|
0872++ 8721 C9 RET
|
|
0873++ 8722
|
|
0874++ 8722 0A C_VIBRT LD A,(BC)
|
|
0875++ 8723 03 INC BC
|
|
0876++ 8724 DD 77 FF LD (IX-12+CHP.OnOffD),A
|
|
0877++ 8727 DD 77 FE LD (IX-12+CHP.COnOff),A
|
|
0878++ 872A 0A LD A,(BC)
|
|
0879++ 872B 03 INC BC
|
|
0880++ 872C DD 77 00 LD (IX-12+CHP.OffOnD),A
|
|
0881++ 872F AF XOR A
|
|
0882++ 8730 DD 77 F9 LD (IX-12+CHP.TSlCnt),A
|
|
0883++ 8733 DD 77 FA LD (IX-12+CHP.CrTnSl),A
|
|
0884++ 8736 DD 77 FB LD (IX-12+CHP.CrTnSl+1),A
|
|
0885++ 8739 C9 RET
|
|
0886++ 873A
|
|
0887++ 873A 0A C_ENGLS LD A,(BC)
|
|
0888++ 873B 03 INC BC
|
|
0889++ 873C FD 77 0E LD (IY-100+VRS.Env_Del),A
|
|
0890++ 873F FD 77 0F LD (IY-100+VRS.CurEDel),A
|
|
0891++ 8742 0A LD A,(BC)
|
|
0892++ 8743 03 INC BC
|
|
0893++ 8744 6F LD L,A
|
|
0894++ 8745 0A LD A,(BC)
|
|
0895++ 8746 03 INC BC
|
|
0896++ 8747 67 LD H,A
|
|
0897++ 8748 FD 75 0A LD (IY-100+VRS.ESldAdd),L
|
|
0898++ 874B FD 74 0B LD (IY-100+VRS.ESldAdd+1),H
|
|
0899++ 874E C9 RET
|
|
0900++ 874F
|
|
0901++ 874F 0A C_DELAY LD A,(BC)
|
|
0902++ 8750 03 INC BC
|
|
0903++ 8751 FD 77 08 LD (IY-100+VRS.Delay),A
|
|
0904++ 8754 21 F6 8B LD HL,VARS2+VRS.ModNum ;if AlCo_TS
|
|
0905++ 8757 CB 4E BIT 1,(HL)
|
|
0906++ 8759 C8 RET Z
|
|
0907++ 875A 32 D9 8B LD (VARS1+VRS.Delay),A
|
|
0908++ 875D 32 DA 8B LD (VARS1+VRS.DelyCnt),A
|
|
0909++ 8760 32 60 8C LD (VARS2+VRS.Delay),A
|
|
0910++ 8763 C9 RET
|
|
0911++ 8764
|
|
0912++ 8764 DD 73 08 SETENV LD (IX-12+CHP.Env_En),E
|
|
0913++ 8767 FD 77 22 LD (IY-100+VRS.AYREGS+EnvTp),A
|
|
0914++ 876A 0A LD A,(BC)
|
|
0915++ 876B 03 INC BC
|
|
0916++ 876C 67 LD H,A
|
|
0917++ 876D 0A LD A,(BC)
|
|
0918++ 876E 03 INC BC
|
|
0919++ 876F 6F LD L,A
|
|
0920++ 8770 CD ED 84 CALL SETENBS
|
|
0921++ 8773 AF XOR A
|
|
0922++ 8774 DD 77 F4 LD (IX-12+CHP.PsInOr),A
|
|
0923++ 8777 FD 77 0F LD (IY-100+VRS.CurEDel),A
|
|
0924++ 877A 67 LD H,A
|
|
0925++ 877B 6F LD L,A
|
|
0926++ 877C C3 F4 84 JP SETESLD
|
|
0927++ 877F
|
|
0928++ 877F 87 SETORN ADD A,A
|
|
0929++ 8780 5F LD E,A
|
|
0930++ 8781 16 00 LD D,0
|
|
0931++ 8783 DD 72 F4 LD (IX-12+CHP.PsInOr),D
|
|
0932++ 8786 FD 6E F8 LD L,(IY-100+VRS.OrnPtrs)
|
|
0933++ 8789 FD 66 F9 LD H,(IY-100+VRS.OrnPtrs+1)
|
|
0934++ 878C 19 ADD HL,DE
|
|
0935++ 878D 5E LD E,(HL)
|
|
0936++ 878E 23 INC HL
|
|
0937++ 878F 56 LD D,(HL)
|
|
0938++ 8790 FD 6E F6 LD L,(IY-100+VRS.MODADDR)
|
|
0939++ 8793 FD 66 F7 LD H,(IY-100+VRS.MODADDR+1)
|
|
0940++ 8796 19 ADD HL,DE
|
|
0941++ 8797 DD 75 01 LD (IX-12+CHP.OrnPtr),L
|
|
0942++ 879A DD 74 02 LD (IX-12+CHP.OrnPtr+1),H
|
|
0943++ 879D C9 C_NOP RET
|
|
0944++ 879E
|
|
0945++ 879E 87 SETSAM ADD A,A
|
|
0946++ 879F 5F LD E,A
|
|
0947++ 87A0 16 00 LD D,0
|
|
0948++ 87A2 FD 6E FA LD L,(IY-100+VRS.SamPtrs);
|
|
0949++ 87A5 FD 66 FB LD H,(IY-100+VRS.SamPtrs+1);
|
|
0950++ 87A8 19 ADD HL,DE
|
|
0951++ 87A9 5E LD E,(HL)
|
|
0952++ 87AA 23 INC HL
|
|
0953++ 87AB 56 LD D,(HL)
|
|
0954++ 87AC FD 6E F6 LD L,(IY-100+VRS.MODADDR)
|
|
0955++ 87AF FD 66 F7 LD H,(IY-100+VRS.MODADDR+1)
|
|
0956++ 87B2 19 ADD HL,DE
|
|
0957++ 87B3 DD 75 03 LD (IX-12+CHP.SamPtr),L
|
|
0958++ 87B6 DD 74 04 LD (IX-12+CHP.SamPtr+1),H
|
|
0959++ 87B9 C9 RET
|
|
0960++ 87BA
|
|
0961++ 87BA ;ALL 16 ADDRESSES TO PROTECT FROM BROKEN PT3 MODULES
|
|
0962++ 87BA 9D 87 SPCCOMS DW C_NOP
|
|
0963++ 87BC F9 86 DW C_GLISS
|
|
0964++ 87BE 85 86 DW C_PORTM
|
|
0965++ 87C0 16 87 DW C_SMPOS
|
|
0966++ 87C2 1C 87 DW C_ORPOS
|
|
0967++ 87C4 22 87 DW C_VIBRT
|
|
0968++ 87C6 9D 87 DW C_NOP
|
|
0969++ 87C8 9D 87 DW C_NOP
|
|
0970++ 87CA 3A 87 DW C_ENGLS
|
|
0971++ 87CC 4F 87 DW C_DELAY
|
|
0972++ 87CE 9D 87 DW C_NOP
|
|
0973++ 87D0 9D 87 DW C_NOP
|
|
0974++ 87D2 9D 87 DW C_NOP
|
|
0975++ 87D4 9D 87 DW C_NOP
|
|
0976++ 87D6 9D 87 DW C_NOP
|
|
0977++ 87D8 9D 87 DW C_NOP
|
|
0978++ 87DA
|
|
0979++ 87DA CD FB 84 CHREGS CALL GETIX
|
|
0980++ 87DD AF XOR A
|
|
0981++ 87DE 32 17 8A LD (Ampl),A
|
|
0982++ 87E1 DD CB 15 46 BIT 0,(IX+CHP.Flags)
|
|
0983++ 87E5 E5 PUSH HL
|
|
0984++ 87E6 CA 2D 89 JP Z,CH_EXIT
|
|
0985++ 87E9 ED 73 77 88 LD (CSP_+1),SP
|
|
0986++ 87ED DD 6E 0D LD L,(IX+CHP.OrnPtr)
|
|
0987++ 87F0 DD 66 0E LD H,(IX+CHP.OrnPtr+1)
|
|
0988++ 87F3 F9 LD SP,HL
|
|
0989++ 87F4 D1 POP DE
|
|
0990++ 87F5 67 LD H,A
|
|
0991++ 87F6 DD 7E 00 LD A,(IX+CHP.PsInOr)
|
|
0992++ 87F9 6F LD L,A
|
|
0993++ 87FA 39 ADD HL,SP
|
|
0994++ 87FB 3C INC A
|
|
0995++ 87FC ;PT2 PT3
|
|
0996++ 87FC 3C OrnCP INC A ;CP E CP D
|
|
0997++ 87FD 38 01 JR C,CH_ORPS
|
|
0998++ 87FF 01 OrnLD DB 1 ;LD A,D LD A,E
|
|
0999++ 8800 DD 77 00 CH_ORPS LD (IX+CHP.PsInOr),A
|
|
1000++ 8803 DD 7E 12 LD A,(IX+CHP.Note)
|
|
1001++ 8806 86 ADD A,(HL)
|
|
1002++ 8807 F2 0B 88 JP P,CH_NTP
|
|
1003++ 880A AF XOR A
|
|
1004++ 880B FE 60 CH_NTP CP 96
|
|
1005++ 880D 38 02 JR C,CH_NOK
|
|
1006++ 880F 3E 5F LD A,95
|
|
1007++ 8811 87 CH_NOK ADD A,A
|
|
1008++ 8812 08 EX AF,AF'
|
|
1009++ 8813 DD 6E 0F LD L,(IX+CHP.SamPtr)
|
|
1010++ 8816 DD 66 10 LD H,(IX+CHP.SamPtr+1)
|
|
1011++ 8819 F9 LD SP,HL
|
|
1012++ 881A D1 POP DE
|
|
1013++ 881B 26 00 LD H,0
|
|
1014++ 881D DD 7E 01 LD A,(IX+CHP.PsInSm)
|
|
1015++ 8820 47 LD B,A
|
|
1016++ 8821 87 ADD A,A
|
|
1017++ 8822 87 SamClc2 ADD A,A ;or ADD A,B for PT2
|
|
1018++ 8823 6F LD L,A
|
|
1019++ 8824 39 ADD HL,SP
|
|
1020++ 8825 F9 LD SP,HL
|
|
1021++ 8826 78 LD A,B
|
|
1022++ 8827 3C INC A
|
|
1023++ 8828 ;PT2 PT3
|
|
1024++ 8828 3C SamCP INC A ;CP E CP D
|
|
1025++ 8829 38 01 JR C,CH_SMPS
|
|
1026++ 882B 01 SamLD DB 1 ;LD A,D LD A,E
|
|
1027++ 882C DD 77 01 CH_SMPS LD (IX+CHP.PsInSm),A
|
|
1028++ 882F C1 POP BC
|
|
1029++ 8830 E1 POP HL
|
|
1030++ 8831
|
|
1031++ 8831 ;Convert PT2 sample to PT3
|
|
1032++ 8831 ;PT2 PT3
|
|
1033++ 8831 E1 SamCnv POP HL ;BIT 2,C JR e_
|
|
1034++ 8832 E1 POP HL
|
|
1035++ 8833 60 LD H,B
|
|
1036++ 8834 20 06 JR NZ,$+8
|
|
1037++ 8836 EB EX DE,HL
|
|
1038++ 8837 A7 AND A
|
|
1039++ 8838 ED 62 SBC HL,HL
|
|
1040++ 883A ED 52 SBC HL,DE
|
|
1041++ 883C 51 LD D,C
|
|
1042++ 883D CB 19 RR C
|
|
1043++ 883F 9F SBC A,A
|
|
1044++ 8840 2F CPL
|
|
1045++ 8841 E6 3E AND #3E
|
|
1046++ 8843 CB 19 RR C
|
|
1047++ 8845 CB 18 RR B
|
|
1048++ 8847 A1 AND C
|
|
1049++ 8848 4F LD C,A
|
|
1050++ 8849 78 LD A,B
|
|
1051++ 884A 1F RRA
|
|
1052++ 884B 1F RRA
|
|
1053++ 884C CB 1A RR D
|
|
1054++ 884E 1F RRA
|
|
1055++ 884F E6 9F AND #9F
|
|
1056++ 8851 47 LD B,A
|
|
1057++ 8852
|
|
1058++ 8852 DD 5E 08 e_ LD E,(IX+CHP.TnAcc)
|
|
1059++ 8855 DD 56 09 LD D,(IX+CHP.TnAcc+1)
|
|
1060++ 8858 19 ADD HL,DE
|
|
1061++ 8859 CB 70 BIT 6,B
|
|
1062++ 885B 28 06 JR Z,CH_NOAC
|
|
1063++ 885D DD 75 08 LD (IX+CHP.TnAcc),L
|
|
1064++ 8860 DD 74 09 LD (IX+CHP.TnAcc+1),H
|
|
1065++ 8863 EB CH_NOAC EX DE,HL
|
|
1066++ 8864 08 EX AF,AF'
|
|
1067++ 8865 C6 6B ADD A,NT_&255
|
|
1068++ 8867 6F LD L,A
|
|
1069++ 8868 CE 8D ADC A,NT_/256
|
|
1070++ 886A 95 SUB L
|
|
1071++ 886B 67 LD H,A
|
|
1072++ 886C F9 LD SP,HL
|
|
1073++ 886D E1 POP HL
|
|
1074++ 886E 19 ADD HL,DE
|
|
1075++ 886F DD 5E 06 LD E,(IX+CHP.CrTnSl)
|
|
1076++ 8872 DD 56 07 LD D,(IX+CHP.CrTnSl+1)
|
|
1077++ 8875 19 ADD HL,DE
|
|
1078++ 8876 31 31 31 CSP_ LD SP,#3131
|
|
1079++ 8879 E3 EX (SP),HL
|
|
1080++ 887A AF XOR A
|
|
1081++ 887B DD B6 05 OR (IX+CHP.TSlCnt)
|
|
1082++ 887E 28 3E JR Z,CH_AMP
|
|
1083++ 8880 DD 35 05 DEC (IX+CHP.TSlCnt)
|
|
1084++ 8883 20 39 JR NZ,CH_AMP
|
|
1085++ 8885 DD 7E 16 LD A,(IX+CHP.TnSlDl)
|
|
1086++ 8888 DD 77 05 LD (IX+CHP.TSlCnt),A
|
|
1087++ 888B DD 6E 17 LD L,(IX+CHP.TSlStp)
|
|
1088++ 888E DD 66 18 LD H,(IX+CHP.TSlStp+1)
|
|
1089++ 8891 7C LD A,H
|
|
1090++ 8892 19 ADD HL,DE
|
|
1091++ 8893 DD 75 06 LD (IX+CHP.CrTnSl),L
|
|
1092++ 8896 DD 74 07 LD (IX+CHP.CrTnSl+1),H
|
|
1093++ 8899 DD CB 15 56 BIT 2,(IX+CHP.Flags)
|
|
1094++ 889D 20 1F JR NZ,CH_AMP
|
|
1095++ 889F DD 5E 19 LD E,(IX+CHP.TnDelt)
|
|
1096++ 88A2 DD 56 1A LD D,(IX+CHP.TnDelt+1)
|
|
1097++ 88A5 A7 AND A
|
|
1098++ 88A6 28 01 JR Z,CH_STPP
|
|
1099++ 88A8 EB EX DE,HL
|
|
1100++ 88A9 ED 52 CH_STPP SBC HL,DE
|
|
1101++ 88AB FA BE 88 JP M,CH_AMP
|
|
1102++ 88AE DD 7E 13 LD A,(IX+CHP.SlToNt)
|
|
1103++ 88B1 DD 77 12 LD (IX+CHP.Note),A
|
|
1104++ 88B4 AF XOR A
|
|
1105++ 88B5 DD 77 05 LD (IX+CHP.TSlCnt),A
|
|
1106++ 88B8 DD 77 06 LD (IX+CHP.CrTnSl),A
|
|
1107++ 88BB DD 77 07 LD (IX+CHP.CrTnSl+1),A
|
|
1108++ 88BE DD 7E 02 CH_AMP LD A,(IX+CHP.CrAmSl)
|
|
1109++ 88C1 CB 79 BIT 7,C
|
|
1110++ 88C3 28 13 JR Z,CH_NOAM
|
|
1111++ 88C5 CB 71 BIT 6,C
|
|
1112++ 88C7 28 07 JR Z,CH_AMIN
|
|
1113++ 88C9 FE 0F CP 15
|
|
1114++ 88CB 28 0B JR Z,CH_NOAM
|
|
1115++ 88CD 3C INC A
|
|
1116++ 88CE 18 05 JR CH_SVAM
|
|
1117++ 88D0 FE F1 CH_AMIN CP -15
|
|
1118++ 88D2 28 04 JR Z,CH_NOAM
|
|
1119++ 88D4 3D DEC A
|
|
1120++ 88D5 DD 77 02 CH_SVAM LD (IX+CHP.CrAmSl),A
|
|
1121++ 88D8 6F CH_NOAM LD L,A
|
|
1122++ 88D9 78 LD A,B
|
|
1123++ 88DA E6 0F AND 15
|
|
1124++ 88DC 85 ADD A,L
|
|
1125++ 88DD F2 E1 88 JP P,CH_APOS
|
|
1126++ 88E0 AF XOR A
|
|
1127++ 88E1 FE 10 CH_APOS CP 16
|
|
1128++ 88E3 38 02 JR C,CH_VOL
|
|
1129++ 88E5 3E 0F LD A,15
|
|
1130++ 88E7 DD B6 1C CH_VOL OR (IX+CHP.Volume)
|
|
1131++ 88EA C6 6B ADD A,VT_&255
|
|
1132++ 88EC 6F LD L,A
|
|
1133++ 88ED CE 8C ADC A,VT_/256
|
|
1134++ 88EF 95 SUB L
|
|
1135++ 88F0 67 LD H,A
|
|
1136++ 88F1 7E LD A,(HL)
|
|
1137++ 88F2 CB 41 CH_ENV BIT 0,C
|
|
1138++ 88F4 20 03 JR NZ,CH_NOEN
|
|
1139++ 88F6 DD B6 14 OR (IX+CHP.Env_En)
|
|
1140++ 88F9 32 17 8A CH_NOEN LD (Ampl),A
|
|
1141++ 88FC CB 78 BIT 7,B
|
|
1142++ 88FE 79 LD A,C
|
|
1143++ 88FF 28 1A JR Z,NO_ENSL
|
|
1144++ 8901 17 RLA
|
|
1145++ 8902 17 RLA
|
|
1146++ 8903 CB 2F SRA A
|
|
1147++ 8905 CB 2F SRA A
|
|
1148++ 8907 CB 2F SRA A
|
|
1149++ 8909 DD 86 04 ADD A,(IX+CHP.CrEnSl) ;SEE COMMENT BELOW
|
|
1150++ 890C CB 68 BIT 5,B
|
|
1151++ 890E 28 03 JR Z,NO_ENAC
|
|
1152++ 8910 DD 77 04 LD (IX+CHP.CrEnSl),A
|
|
1153++ 8913 FD 86 12 NO_ENAC ADD A,(IY-100+VRS.AddToEn) ;BUG IN PT3 - NEED WORD HERE
|
|
1154++ 8916 FD 77 12 LD (IY-100+VRS.AddToEn),A
|
|
1155++ 8919 18 0E JR CH_MIX
|
|
1156++ 891B 1F NO_ENSL RRA
|
|
1157++ 891C DD 86 03 ADD A,(IX+CHP.CrNsSl)
|
|
1158++ 891F FD 77 11 LD (IY-100+VRS.AddToNs),A
|
|
1159++ 8922 CB 68 BIT 5,B
|
|
1160++ 8924 28 03 JR Z,CH_MIX
|
|
1161++ 8926 DD 77 03 LD (IX+CHP.CrNsSl),A
|
|
1162++ 8929 78 CH_MIX LD A,B
|
|
1163++ 892A 1F RRA
|
|
1164++ 892B E6 48 AND #48
|
|
1165++ 892D FD B6 1C CH_EXIT OR (IY-100+VRS.AYREGS+Mixer)
|
|
1166++ 8930 0F RRCA
|
|
1167++ 8931 FD 77 1C LD (IY-100+VRS.AYREGS+Mixer),A
|
|
1168++ 8934 E1 POP HL
|
|
1169++ 8935 AF XOR A
|
|
1170++ 8936 DD B6 0A OR (IX+CHP.COnOff)
|
|
1171++ 8939 C8 RET Z
|
|
1172++ 893A DD 35 0A DEC (IX+CHP.COnOff)
|
|
1173++ 893D C0 RET NZ
|
|
1174++ 893E DD AE 15 XOR (IX+CHP.Flags)
|
|
1175++ 8941 DD 77 15 LD (IX+CHP.Flags),A
|
|
1176++ 8944 1F RRA
|
|
1177++ 8945 DD 7E 0B LD A,(IX+CHP.OnOffD)
|
|
1178++ 8948 38 03 JR C,CH_ONDL
|
|
1179++ 894A DD 7E 0C LD A,(IX+CHP.OffOnD)
|
|
1180++ 894D DD 77 0A CH_ONDL LD (IX+CHP.COnOff),A
|
|
1181++ 8950 C9 RET
|
|
1182++ 8951
|
|
1183++ 8951 AF PLAY_ XOR A
|
|
1184++ 8952 FD 77 12 LD (IY-100+VRS.AddToEn),A
|
|
1185++ 8955 FD 77 1C LD (IY-100+VRS.AYREGS+Mixer),A
|
|
1186++ 8958 3D DEC A
|
|
1187++ 8959 FD 77 22 LD (IY-100+VRS.AYREGS+EnvTp),A
|
|
1188++ 895C FD 35 09 DEC (IY-100+VRS.DelyCnt)
|
|
1189++ 895F C2 04 8A JP NZ,PL2
|
|
1190++ 8962 FD 35 BA DEC (IY-100+VRS.ChanA+CHP.NtSkCn)
|
|
1191++ 8965 20 69 JR NZ,PL1B
|
|
1192++ 8967 FD 4E FE LD C,(IY-100+VRS.AdInPtA)
|
|
1193++ 896A FD 46 FF LD B,(IY-100+VRS.AdInPtA+1)
|
|
1194++ 896D 0A LD A,(BC)
|
|
1195++ 896E A7 AND A
|
|
1196++ 896F 20 53 JR NZ,PL1A
|
|
1197++ 8971 57 LD D,A
|
|
1198++ 8972 FD 77 10 LD (IY-100+VRS.Ns_Base),A
|
|
1199++ 8975 FD 6E 04 LD L,(IY-100+VRS.CrPsPtr)
|
|
1200++ 8978 FD 66 05 LD H,(IY-100+VRS.CrPsPtr+1)
|
|
1201++ 897B 23 INC HL
|
|
1202++ 897C 7E LD A,(HL)
|
|
1203++ 897D 3C INC A
|
|
1204++ 897E 20 08 JR NZ,PLNLP
|
|
1205++ 8980
|
|
1206++ 8980 IF LoopChecker
|
|
1207++ 8980~ CALL CHECKLP
|
|
1208++ 8980 ENDIF
|
|
1209++ 8980
|
|
1210++ 8980 FD 6E 06 LD L,(IY-100+VRS.LPosPtr)
|
|
1211++ 8983 FD 66 07 LD H,(IY-100+VRS.LPosPtr+1)
|
|
1212++ 8986 7E LD A,(HL)
|
|
1213++ 8987 3C INC A
|
|
1214++ 8988 CD DF 84 PLNLP CALL SETCPPT
|
|
1215++ 898B 3D DEC A
|
|
1216++ 898C FD CB 9E 4E BIT 1,(IY-100+VRS.ModNum)
|
|
1217++ 8990 28 03 JR Z,NoAlCo
|
|
1218++ 8992 TSSub EQU $+1
|
|
1219++ 8992 D6 D6 SUB #D6
|
|
1220++ 8994 2F CPL
|
|
1221++ 8995 NoAlCo
|
|
1222++ 8995 ;PT2 PT3
|
|
1223++ 8995 3D PsCalc DEC A ;ADD A,A NOP
|
|
1224++ 8996 3D DEC A ;ADD A,(HL) NOP
|
|
1225++ 8997 87 ADD A,A
|
|
1226++ 8998 5F LD E,A
|
|
1227++ 8999 CB 12 RL D
|
|
1228++ 899B
|
|
1229++ 899B IF CurPosCounter
|
|
1230++ 899B~ LD A,L
|
|
1231++ 899B~ SUB (IY-100+VRS.PosSub)
|
|
1232++ 899B~ LD (IY-100+VRS.CurPos),A
|
|
1233++ 899B ENDIF
|
|
1234++ 899B
|
|
1235++ 899B FD 6E FC LD L,(IY-100+VRS.PatsPtr)
|
|
1236++ 899E FD 66 FD LD H,(IY-100+VRS.PatsPtr+1)
|
|
1237++ 89A1 19 ADD HL,DE
|
|
1238++ 89A2 FD 5E F6 LD E,(IY-100+VRS.MODADDR)
|
|
1239++ 89A5 FD 56 F7 LD D,(IY-100+VRS.MODADDR+1)
|
|
1240++ 89A8 ED 73 C2 89 LD (PSP_+1),SP
|
|
1241++ 89AC F9 LD SP,HL
|
|
1242++ 89AD E1 POP HL
|
|
1243++ 89AE 19 ADD HL,DE
|
|
1244++ 89AF 44 LD B,H
|
|
1245++ 89B0 4D LD C,L
|
|
1246++ 89B1 E1 POP HL
|
|
1247++ 89B2 19 ADD HL,DE
|
|
1248++ 89B3 FD 75 00 LD (IY-100+VRS.AdInPtB),L
|
|
1249++ 89B6 FD 74 01 LD (IY-100+VRS.AdInPtB+1),H
|
|
1250++ 89B9 E1 POP HL
|
|
1251++ 89BA 19 ADD HL,DE
|
|
1252++ 89BB FD 75 02 LD (IY-100+VRS.AdInPtC),L
|
|
1253++ 89BE FD 74 03 LD (IY-100+VRS.AdInPtC+1),H
|
|
1254++ 89C1 31 31 31 PSP_ LD SP,#3131
|
|
1255++ 89C4 11 AB FF PL1A LD DE,VRS.ChanA+12-100
|
|
1256++ 89C7 CD 02 85 CALL PTDECOD
|
|
1257++ 89CA FD 71 FE LD (IY-100+VRS.AdInPtA),C
|
|
1258++ 89CD FD 70 FF LD (IY-100+VRS.AdInPtA+1),B
|
|
1259++ 89D0
|
|
1260++ 89D0 FD 35 D7 PL1B DEC (IY-100+VRS.ChanB+CHP.NtSkCn)
|
|
1261++ 89D3 20 12 JR NZ,PL1C
|
|
1262++ 89D5 11 C8 FF LD DE,VRS.ChanB+12-100
|
|
1263++ 89D8 FD 4E 00 LD C,(IY-100+VRS.AdInPtB)
|
|
1264++ 89DB FD 46 01 LD B,(IY-100+VRS.AdInPtB+1)
|
|
1265++ 89DE CD 02 85 CALL PTDECOD
|
|
1266++ 89E1 FD 71 00 LD (IY-100+VRS.AdInPtB),C
|
|
1267++ 89E4 FD 70 01 LD (IY-100+VRS.AdInPtB+1),B
|
|
1268++ 89E7
|
|
1269++ 89E7 FD 35 F4 PL1C DEC (IY-100+VRS.ChanC+CHP.NtSkCn)
|
|
1270++ 89EA 20 12 JR NZ,PL1D
|
|
1271++ 89EC 11 E5 FF LD DE,VRS.ChanC+12-100
|
|
1272++ 89EF FD 4E 02 LD C,(IY-100+VRS.AdInPtC)
|
|
1273++ 89F2 FD 46 03 LD B,(IY-100+VRS.AdInPtC+1)
|
|
1274++ 89F5 CD 02 85 CALL PTDECOD
|
|
1275++ 89F8 FD 71 02 LD (IY-100+VRS.AdInPtC),C
|
|
1276++ 89FB FD 70 03 LD (IY-100+VRS.AdInPtC+1),B
|
|
1277++ 89FE
|
|
1278++ 89FE FD 7E 08 PL1D LD A,(IY-100+VRS.Delay)
|
|
1279++ 8A01 FD 77 09 LD (IY-100+VRS.DelyCnt),A
|
|
1280++ 8A04
|
|
1281++ 8A04 11 9F FF PL2 LD DE,VRS.ChanA-100
|
|
1282++ 8A07 FD 6E 15 LD L,(IY-100+VRS.AYREGS+TonA)
|
|
1283++ 8A0A FD 66 16 LD H,(IY-100+VRS.AYREGS+TonA+1)
|
|
1284++ 8A0D CD DA 87 CALL CHREGS
|
|
1285++ 8A10 FD 75 15 LD (IY-100+VRS.AYREGS+TonA),L
|
|
1286++ 8A13 FD 74 16 LD (IY-100+VRS.AYREGS+TonA+1),H
|
|
1287++ 8A16 Ampl EQU $+1
|
|
1288++ 8A16 3E 3E LD A,#3E
|
|
1289++ 8A18 FD 77 1D LD (IY-100+VRS.AYREGS+AmplA),A
|
|
1290++ 8A1B 11 BC FF LD DE,VRS.ChanB-100
|
|
1291++ 8A1E FD 6E 17 LD L,(IY-100+VRS.AYREGS+TonB)
|
|
1292++ 8A21 FD 66 18 LD H,(IY-100+VRS.AYREGS+TonB+1)
|
|
1293++ 8A24 CD DA 87 CALL CHREGS
|
|
1294++ 8A27 FD 75 17 LD (IY-100+VRS.AYREGS+TonB),L
|
|
1295++ 8A2A FD 74 18 LD (IY-100+VRS.AYREGS+TonB+1),H
|
|
1296++ 8A2D 3A 17 8A LD A,(Ampl)
|
|
1297++ 8A30 FD 77 1E LD (IY-100+VRS.AYREGS+AmplB),A
|
|
1298++ 8A33 11 D9 FF LD DE,VRS.ChanC-100
|
|
1299++ 8A36 FD 6E 19 LD L,(IY-100+VRS.AYREGS+TonC)
|
|
1300++ 8A39 FD 66 1A LD H,(IY-100+VRS.AYREGS+TonC+1)
|
|
1301++ 8A3C CD DA 87 CALL CHREGS
|
|
1302++ 8A3F FD 75 19 LD (IY-100+VRS.AYREGS+TonC),L
|
|
1303++ 8A42 FD 74 1A LD (IY-100+VRS.AYREGS+TonC+1),H
|
|
1304++ 8A45 3A 17 8A LD A,(Ampl)
|
|
1305++ 8A48 FD 77 1F LD (IY-100+VRS.AYREGS+AmplC),A
|
|
1306++ 8A4B
|
|
1307++ 8A4B FD 7E 10 LD A,(IY-100+VRS.Ns_Base)
|
|
1308++ 8A4E FD 86 11 ADD (IY-100+VRS.AddToNs)
|
|
1309++ 8A51 FD 77 1B LD (IY-100+VRS.AYREGS+Noise),A
|
|
1310++ 8A54
|
|
1311++ 8A54 FD 7E 12 LD A,(IY-100+VRS.AddToEn)
|
|
1312++ 8A57 5F LD E,A
|
|
1313++ 8A58 87 ADD A,A
|
|
1314++ 8A59 9F SBC A,A
|
|
1315++ 8A5A 57 LD D,A
|
|
1316++ 8A5B FD 6E 13 LD L,(IY-100+VRS.EnvBase)
|
|
1317++ 8A5E FD 66 14 LD H,(IY-100+VRS.EnvBase+1)
|
|
1318++ 8A61 19 ADD HL,DE
|
|
1319++ 8A62 FD 5E 0C LD E,(IY-100+VRS.CurESld)
|
|
1320++ 8A65 FD 56 0D LD D,(IY-100+VRS.CurESld+1)
|
|
1321++ 8A68 19 ADD HL,DE
|
|
1322++ 8A69 FD 75 20 LD (IY-100+VRS.AYREGS+Env),L
|
|
1323++ 8A6C FD 74 21 LD (IY-100+VRS.AYREGS+Env+1),H
|
|
1324++ 8A6F
|
|
1325++ 8A6F AF XOR A
|
|
1326++ 8A70 FD B6 0F OR (IY-100+VRS.CurEDel)
|
|
1327++ 8A73 C8 RET Z
|
|
1328++ 8A74 FD 35 0F DEC (IY-100+VRS.CurEDel)
|
|
1329++ 8A77 C0 RET NZ
|
|
1330++ 8A78 FD 7E 0E LD A,(IY-100+VRS.Env_Del)
|
|
1331++ 8A7B FD 77 0F LD (IY-100+VRS.CurEDel),A
|
|
1332++ 8A7E FD 6E 0A LD L,(IY-100+VRS.ESldAdd)
|
|
1333++ 8A81 FD 66 0B LD H,(IY-100+VRS.ESldAdd+1)
|
|
1334++ 8A84 19 ADD HL,DE
|
|
1335++ 8A85 C3 F4 84 JP SETESLD
|
|
1336++ 8A88
|
|
1337++ 8A88 FD 21 D1 8B PLAY LD IY,VARS1+100
|
|
1338++ 8A8C CD 51 89 CALL PLAY_
|
|
1339++ 8A8F 3A 6C 8B LD A,(is_ts)
|
|
1340++ 8A92 A7 AND A
|
|
1341++ 8A93 28 07 JR Z,PL_nts
|
|
1342++ 8A95 FD 21 58 8C LD IY,VARS2+100
|
|
1343++ 8A99 CD 51 89 CALL PLAY_
|
|
1344++ 8A9C PL_nts
|
|
1345++ 8A9C IF Basic
|
|
1346++ 8A9C~ LD IY,#5C3A
|
|
1347++ 8A9C ENDIF
|
|
1348++ 8A9C
|
|
1349++ 8A9C 01 FD FF ROUT LD BC,#FFFD
|
|
1350++ 8A9F 3A 6C 8B LD A,(is_ts)
|
|
1351++ 8AA2 A7 AND A
|
|
1352++ 8AA3 IFDEF ONtfm
|
|
1353++ 8AA3 2E F9 LD L,#F9
|
|
1354++ 8AA5 ED 69 OUT (C),L
|
|
1355++ 8AA7 ELSE
|
|
1356++ 8AA7~ JR Z,r_nts ;keep old standard
|
|
1357++ 8AA7~ OUT (C),B
|
|
1358++ 8AA7 ENDIF
|
|
1359++ 8AA7 08 r_nts EX AF,AF'
|
|
1360++ 8AA8
|
|
1361++ 8AA8 IF ACBBAC
|
|
1362++ 8AA8~ LD IX,VARS1+VRS.AYREGS
|
|
1363++ 8AA8 ELSE
|
|
1364++ 8AA8 21 E6 8B LD HL,VARS1+VRS.AYREGS
|
|
1365++ 8AAB ENDIF
|
|
1366++ 8AAB
|
|
1367++ 8AAB CD B8 8A CALL ROUT_
|
|
1368++ 8AAE 08 EX AF,AF'
|
|
1369++ 8AAF C8 RET Z
|
|
1370++ 8AB0 42 LD B,D
|
|
1371++ 8AB1
|
|
1372++ 8AB1 IFDEF ONtfm
|
|
1373++ 8AB1 3E F8 LD A,#F8
|
|
1374++ 8AB3 ELSE
|
|
1375++ 8AB3~ CPL
|
|
1376++ 8AB3 ENDIF
|
|
1377++ 8AB3 ED 79 OUT (C),A
|
|
1378++ 8AB5
|
|
1379++ 8AB5 IF ACBBAC
|
|
1380++ 8AB5~ LD IX,VARS2+VRS.AYREGS
|
|
1381++ 8AB5 ELSE
|
|
1382++ 8AB5 21 6D 8C LD HL,VARS2+VRS.AYREGS
|
|
1383++ 8AB8 ENDIF
|
|
1384++ 8AB8
|
|
1385++ 8AB8 ROUT_
|
|
1386++ 8AB8 IF ACBBAC
|
|
1387++ 8AB8~ LD A,(SETUP)
|
|
1388++ 8AB8~ AND 12
|
|
1389++ 8AB8~ JR Z,ABC
|
|
1390++ 8AB8~ ADD A,CHTABLE
|
|
1391++ 8AB8~ LD E,A
|
|
1392++ 8AB8~ ADC A,CHTABLE/256
|
|
1393++ 8AB8~ SUB E
|
|
1394++ 8AB8~ LD D,A
|
|
1395++ 8AB8~ LD B,0
|
|
1396++ 8AB8~ PUSH IX
|
|
1397++ 8AB8~ POP HL
|
|
1398++ 8AB8~ LD A,(DE)
|
|
1399++ 8AB8~ INC DE
|
|
1400++ 8AB8~ LD C,A
|
|
1401++ 8AB8~ ADD HL,BC
|
|
1402++ 8AB8~ LD A,(IX+TonB)
|
|
1403++ 8AB8~ LD C,(HL)
|
|
1404++ 8AB8~ LD (IX+TonB),C
|
|
1405++ 8AB8~ LD (HL),A
|
|
1406++ 8AB8~ INC HL
|
|
1407++ 8AB8~ LD A,(IX+TonB+1)
|
|
1408++ 8AB8~ LD C,(HL)
|
|
1409++ 8AB8~ LD (IX+TonB+1),C
|
|
1410++ 8AB8~ LD (HL),A
|
|
1411++ 8AB8~ LD A,(DE)
|
|
1412++ 8AB8~ INC DE
|
|
1413++ 8AB8~ LD C,A
|
|
1414++ 8AB8~ ADD HL,BC
|
|
1415++ 8AB8~ LD A,(IX+AmplB)
|
|
1416++ 8AB8~ LD C,(HL)
|
|
1417++ 8AB8~ LD (IX+AmplB),C
|
|
1418++ 8AB8~ LD (HL),A
|
|
1419++ 8AB8~ LD A,(DE)
|
|
1420++ 8AB8~ INC DE
|
|
1421++ 8AB8~ LD (RxCA1),A
|
|
1422++ 8AB8~ XOR 8
|
|
1423++ 8AB8~ LD (RxCA2),A
|
|
1424++ 8AB8~ LD A,(DE)
|
|
1425++ 8AB8~ AND (IX+Mixer)
|
|
1426++ 8AB8~ LD E,A
|
|
1427++ 8AB8~ LD A,(IX+Mixer)
|
|
1428++ 8AB8~ RxCA1 DB #E6
|
|
1429++ 8AB8~ AND %010010
|
|
1430++ 8AB8~ OR E
|
|
1431++ 8AB8~ LD E,A
|
|
1432++ 8AB8~ LD A,(IX+Mixer)
|
|
1433++ 8AB8~ AND %010010
|
|
1434++ 8AB8~ RxCA2 OR E
|
|
1435++ 8AB8~ OR E
|
|
1436++ 8AB8~ LD (IX+Mixer),A
|
|
1437++ 8AB8~ ABC
|
|
1438++ 8AB8 ENDIF
|
|
1439++ 8AB8
|
|
1440++ 8AB8 AF XOR A
|
|
1441++ 8AB9 11 BF FF LD DE,#FFBF
|
|
1442++ 8ABC
|
|
1443++ 8ABC IF ACBBAC
|
|
1444++ 8ABC~ LD BC,#FFFD
|
|
1445++ 8ABC~ PUSH IX
|
|
1446++ 8ABC~ POP HL
|
|
1447++ 8ABC ENDIF
|
|
1448++ 8ABC
|
|
1449++ 8ABC LOUT
|
|
1450++ 8ABC IFDEF ONtfm
|
|
1451++ 8ABC ED 70 INF
|
|
1452++ 8ABE FA BC 8A JP M,$-2
|
|
1453++ 8AC1 ENDIF
|
|
1454++ 8AC1 ED 79 OUT (C),A
|
|
1455++ 8AC3 IFDEF ONtfm
|
|
1456++ 8AC3 ED 70 INF
|
|
1457++ 8AC5 FA C3 8A JP M,$-2
|
|
1458++ 8AC8 ENDIF
|
|
1459++ 8AC8 43 LD B,E
|
|
1460++ 8AC9 ED A3 OUTI
|
|
1461++ 8ACB 42 LD B,D
|
|
1462++ 8ACC 3C INC A
|
|
1463++ 8ACD FE 0D CP 13
|
|
1464++ 8ACF 20 EB JR NZ,LOUT
|
|
1465++ 8AD1 IFDEF ONtfm
|
|
1466++ 8AD1 ED 70 INF
|
|
1467++ 8AD3 FA D1 8A JP M,$-2
|
|
1468++ 8AD6 ENDIF
|
|
1469++ 8AD6 ED 79 OUT (C),A
|
|
1470++ 8AD8 7E LD A,(HL)
|
|
1471++ 8AD9 A7 AND A
|
|
1472++ 8ADA F8 RET M
|
|
1473++ 8ADB IFDEF ONtfm
|
|
1474++ 8ADB ED 70 INF
|
|
1475++ 8ADD FA DB 8A JP M,$-2
|
|
1476++ 8AE0 ENDIF
|
|
1477++ 8AE0 43 LD B,E
|
|
1478++ 8AE1 ED 79 OUT (C),A
|
|
1479++ 8AE3 C9 RET
|
|
1480++ 8AE4
|
|
1481++ 8AE4 IF ACBBAC
|
|
1482++ 8AE4~ CHTABLE EQU $-4
|
|
1483++ 8AE4~ DB 4,5,15,%001001,0,7,7,%100100
|
|
1484++ 8AE4 ENDIF
|
|
1485++ 8AE4
|
|
1486++ 8AE4 64 NT_DATA DB (T_NEW_0-T1_)*2
|
|
1487++ 8AE5 2A DB TCNEW_0-T_
|
|
1488++ 8AE6 65 DB (T_OLD_0-T1_)*2+1
|
|
1489++ 8AE7 00 DB TCOLD_0-T_
|
|
1490++ 8AE8 01 DB (T_NEW_1-T1_)*2+1
|
|
1491++ 8AE9 0C DB TCNEW_1-T_
|
|
1492++ 8AEA 01 DB (T_OLD_1-T1_)*2+1
|
|
1493++ 8AEB 0C DB TCOLD_1-T_
|
|
1494++ 8AEC 94 DB (T_NEW_2-T1_)*2
|
|
1495++ 8AED 35 DB TCNEW_2-T_
|
|
1496++ 8AEE 30 DB (T_OLD_2-T1_)*2
|
|
1497++ 8AEF 0E DB TCOLD_2-T_
|
|
1498++ 8AF0 60 DB (T_NEW_3-T1_)*2
|
|
1499++ 8AF1 20 DB TCNEW_3-T_
|
|
1500++ 8AF2 60 DB (T_OLD_3-T1_)*2
|
|
1501++ 8AF3 21 DB TCOLD_3-T_
|
|
1502++ 8AF4
|
|
1503++ 8AF4 T_
|
|
1504++ 8AF4
|
|
1505++ 8AF4 TCOLD_0 DB #00+1,#04+1,#08+1,#0A+1,#0C+1,#0E+1,#12+1,#14+1
|
|
1505++ 8AF4 0105090B0D0F1315
|
|
1506++ 8AFC 19 25 3D 00 DB #18+1,#24+1,#3C+1,0
|
|
1507++ 8B00 5D 00 TCOLD_1 DB #5C+1,0
|
|
1508++ 8B02 TCOLD_2 DB #30+1,#36+1,#4C+1,#52+1,#5E+1,#70+1,#82,#8C,#9C
|
|
1508++ 8B02 31374D535F71828C9C
|
|
1509++ 8B0B DB #9E,#A0,#A6,#A8,#AA,#AC,#AE,#AE,0
|
|
1509++ 8B0B 9EA0A6A8AAACAEAE00
|
|
1510++ 8B14 57 TCNEW_3 DB #56+1
|
|
1511++ 8B15 TCOLD_3 DB #1E+1,#22+1,#24+1,#28+1,#2C+1,#2E+1,#32+1,#BE+1,0
|
|
1511++ 8B15 1F2325292D2F33BF00
|
|
1512++ 8B1E TCNEW_0 DB #1C+1,#20+1,#22+1,#26+1,#2A+1,#2C+1,#30+1,#54+1
|
|
1512++ 8B1E 1D2123272B2D3155
|
|
1513++ 8B26 BD BF 00 DB #BC+1,#BE+1,0
|
|
1514++ 8B29 TCNEW_1 EQU TCOLD_1
|
|
1515++ 8B29 TCNEW_2 DB #1A+1,#20+1,#24+1,#28+1,#2A+1,#3A+1,#4C+1,#5E+1
|
|
1515++ 8B29 1B2125292B3B4D5F
|
|
1516++ 8B31 BB BD BF 00 DB #BA+1,#BC+1,#BE+1,0
|
|
1517++ 8B35
|
|
1518++ 8B35 PT3EMPTYORN EQU $-1
|
|
1519++ 8B35 01 00 DB 1,0
|
|
1520++ 8B37
|
|
1521++ 8B37 ;first 12 values of tone tables (packed)
|
|
1522++ 8B37
|
|
1523++ 8B37 0D D8 T_PACK DB #06EC*2/256,#06EC*2&255
|
|
1524++ 8B39 69 DB #0755-#06EC
|
|
1525++ 8B3A 70 DB #07C5-#0755
|
|
1526++ 8B3B 76 DB #083B-#07C5
|
|
1527++ 8B3C 7D DB #08B8-#083B
|
|
1528++ 8B3D 85 DB #093D-#08B8
|
|
1529++ 8B3E 8D DB #09CA-#093D
|
|
1530++ 8B3F 95 DB #0A5F-#09CA
|
|
1531++ 8B40 9D DB #0AFC-#0A5F
|
|
1532++ 8B41 A8 DB #0BA4-#0AFC
|
|
1533++ 8B42 B1 DB #0C55-#0BA4
|
|
1534++ 8B43 BB DB #0D10-#0C55
|
|
1535++ 8B44 0C DA DB #066D*2/256,#066D*2&255
|
|
1536++ 8B46 62 DB #06CF-#066D
|
|
1537++ 8B47 68 DB #0737-#06CF
|
|
1538++ 8B48 6D DB #07A4-#0737
|
|
1539++ 8B49 75 DB #0819-#07A4
|
|
1540++ 8B4A 7B DB #0894-#0819
|
|
1541++ 8B4B 83 DB #0917-#0894
|
|
1542++ 8B4C 8A DB #09A1-#0917
|
|
1543++ 8B4D 92 DB #0A33-#09A1
|
|
1544++ 8B4E 9C DB #0ACF-#0A33
|
|
1545++ 8B4F A4 DB #0B73-#0ACF
|
|
1546++ 8B50 AF DB #0C22-#0B73
|
|
1547++ 8B51 B8 DB #0CDA-#0C22
|
|
1548++ 8B52 0E 08 DB #0704*2/256,#0704*2&255
|
|
1549++ 8B54 6A DB #076E-#0704
|
|
1550++ 8B55 72 DB #07E0-#076E
|
|
1551++ 8B56 78 DB #0858-#07E0
|
|
1552++ 8B57 7E DB #08D6-#0858
|
|
1553++ 8B58 86 DB #095C-#08D6
|
|
1554++ 8B59 90 DB #09EC-#095C
|
|
1555++ 8B5A 96 DB #0A82-#09EC
|
|
1556++ 8B5B A0 DB #0B22-#0A82
|
|
1557++ 8B5C AA DB #0BCC-#0B22
|
|
1558++ 8B5D B4 DB #0C80-#0BCC
|
|
1559++ 8B5E BE DB #0D3E-#0C80
|
|
1560++ 8B5F 0F C0 DB #07E0*2/256,#07E0*2&255
|
|
1561++ 8B61 78 DB #0858-#07E0
|
|
1562++ 8B62 88 DB #08E0-#0858
|
|
1563++ 8B63 80 DB #0960-#08E0
|
|
1564++ 8B64 90 DB #09F0-#0960
|
|
1565++ 8B65 98 DB #0A88-#09F0
|
|
1566++ 8B66 A0 DB #0B28-#0A88
|
|
1567++ 8B67 B0 DB #0BD8-#0B28
|
|
1568++ 8B68 A8 DB #0C80-#0BD8
|
|
1569++ 8B69 E0 DB #0D60-#0C80
|
|
1570++ 8B6A B0 DB #0E10-#0D60
|
|
1571++ 8B6B E8 DB #0EF8-#0E10
|
|
1572++ 8B6C
|
|
1573++ 8B6C ;vars from here can be stripped
|
|
1574++ 8B6C ;you can move VARS to any other address
|
|
1575++ 8B6C
|
|
1576++ 8B6C VARS
|
|
1577++ 8B6C
|
|
1578++ 8B6C 00 is_ts DB 0
|
|
1579++ 8B6D
|
|
1580++ 8B6D ;ChannelsVars
|
|
1581++ 8B6D STRUCT CHP
|
|
1582++ 8B6D~ ;reset group
|
|
1583++ 8B6D~ PsInOr DB 0
|
|
1584++ 8B6D~ PsInSm DB 0
|
|
1585++ 8B6D~ CrAmSl DB 0
|
|
1586++ 8B6D~ CrNsSl DB 0
|
|
1587++ 8B6D~ CrEnSl DB 0
|
|
1588++ 8B6D~ TSlCnt DB 0
|
|
1589++ 8B6D~ CrTnSl DW 0
|
|
1590++ 8B6D~ TnAcc DW 0
|
|
1591++ 8B6D~ COnOff DB 0
|
|
1592++ 8B6D~ ;reset group
|
|
1593++ 8B6D~ 1594++ 8B6D~ OnOffD DB 0
|
|
1595++ 8B6D~ 1596++ 8B6D~ ;IX for PTDECOD here (+12)
|
|
1597++ 8B6D~ OffOnD DB 0
|
|
1598++ 8B6D~ OrnPtr DW 0
|
|
1599++ 8B6D~ SamPtr DW 0
|
|
1600++ 8B6D~ NNtSkp DB 0
|
|
1601++ 8B6D~ Note DB 0
|
|
1602++ 8B6D~ SlToNt DB 0
|
|
1603++ 8B6D~ Env_En DB 0
|
|
1604++ 8B6D~ Flags DB 0
|
|
1605++ 8B6D~ ;Enabled - 0, SimpleGliss - 2
|
|
1606++ 8B6D~ TnSlDl DB 0
|
|
1607++ 8B6D~ TSlStp DW 0
|
|
1608++ 8B6D~ TnDelt DW 0
|
|
1609++ 8B6D~ NtSkCn DB 0
|
|
1610++ 8B6D~ Volume DB 0
|
|
1611++ 8B6D ENDS
|
|
1612++ 8B6D
|
|
1613++ 8B6D STRUCT VRS
|
|
1614++ 8B6D~ 1615++ 8B6D~ ;IF not works in STRUCT in SjASM :(
|
|
1616++ 8B6D~ ; IF CurPosCounter
|
|
1617++ 8B6D~ CurPos DB 0
|
|
1618++ 8B6D~ PosSub DB 0
|
|
1619++ 8B6D~ ; ENDIF
|
|
1620++ 8B6D~ 1621++ 8B6D~ ModNum DB 0 ;bit0: ChipNum
|
|
1622++ 8B6D~ ;bit1: 1-reversed patterns order (AlCo TS)
|
|
1623++ 8B6D~ 1624++ 8B6D~ ChanA DS CHP
|
|
1625++ 8B6D~ ChanB DS CHP
|
|
1626++ 8B6D~ ChanC DS CHP
|
|
1627++ 8B6D~ 1628++ 8B6D~ ;GlobalVars
|
|
1629++ 8B6D~ MODADDR DW 0
|
|
1630++ 8B6D~ OrnPtrs DW 0
|
|
1631++ 8B6D~ SamPtrs DW 0
|
|
1632++ 8B6D~ PatsPtr DW 0
|
|
1633++ 8B6D~ AdInPtA DW 0
|
|
1634++ 8B6D~ AdInPtB DW 0
|
|
1635++ 8B6D~ AdInPtC DW 0
|
|
1636++ 8B6D~ CrPsPtr DW 0
|
|
1637++ 8B6D~ LPosPtr DW 0
|
|
1638++ 8B6D~ Delay DB 0
|
|
1639++ 8B6D~ DelyCnt DB 0
|
|
1640++ 8B6D~ ESldAdd DW 0
|
|
1641++ 8B6D~ CurESld DW 0
|
|
1642++ 8B6D~ Env_Del DB 0
|
|
1643++ 8B6D~ CurEDel DB 0
|
|
1644++ 8B6D~ Ns_Base DB 0
|
|
1645++ 8B6D~ AddToNs DB 0
|
|
1646++ 8B6D~ AddToEn DB 0
|
|
1647++ 8B6D~ EnvBase DW 0
|
|
1648++ 8B6D~ AYREGS DS 14
|
|
1649++ 8B6D ENDS
|
|
1650++ 8B6D
|
|
1651++ 8B6D 00 VARS1 DS VRS
|
|
1652++ 8BF4 00 VARS2 DS VRS
|
|
1653++ 8C7B
|
|
1654++ 8C7B VT_ EQU $-16
|
|
1655++ 8C7B 00 DS 256-16 ;CreatedVolumeTableAddress
|
|
1656++ 8D6B
|
|
1657++ 8D6B T1_ EQU VT_+16 ;Tone tables data depacked here
|
|
1658++ 8D6B
|
|
1659++ 8D6B T_OLD_1 EQU T1_
|
|
1660++ 8D6B T_OLD_2 EQU T_OLD_1+24
|
|
1661++ 8D6B T_OLD_3 EQU T_OLD_2+24
|
|
1662++ 8D6B T_OLD_0 EQU T_OLD_3+2
|
|
1663++ 8D6B T_NEW_0 EQU T_OLD_0
|
|
1664++ 8D6B T_NEW_1 EQU T_OLD_1
|
|
1665++ 8D6B T_NEW_2 EQU T_NEW_0+24
|
|
1666++ 8D6B T_NEW_3 EQU T_OLD_3
|
|
1667++ 8D6B
|
|
1668++ 8D6B PT2EMPTYORN EQU VT_+31 ;1,0,0 sequence
|
|
1669++ 8D6B
|
|
1670++ 8D6B 00 NT_ DS 192 ;CreatedNoteTableAddress
|
|
1671++ 8E2B
|
|
1672++ 8E2B VAR0END EQU VT_+16 ;INIT zeroes from VARS to VAR0END-1
|
|
1673++ 8E2B
|
|
1674++ 8E2B VARSEND EQU $
|
|
1675++ 8E2B MDLADDR EQU $
|
|
1676++ 8E2B
|
|
1677++ 8E2B DISPLAY "PTS player size=",$-START
|
|
1678++ 8E2B
|
|
1679++ 8E2B ;Release 0 steps:
|
|
1680++ 8E2B ;04/21/2007
|
|
1681++ 8E2B ;Works start (PTxPlay adaptation); first beta.
|
|
1682++ 8E2B ;04/22/2007
|
|
1683++ 8E2B ;Job finished; beta-testing.
|
|
1684++ 8E2B ;04/23/2007
|
|
1685++ 8E2B ;PT v3.7 TS mode corrected (after AlCo remarks).
|
|
1686++ 8E2B ;04/29/2007
|
|
1687++ 8E2B ;Added 1.XX and 2.XX special commands interpretation for PT3
|
|
1688++ 8E2B ;modules of v3.7+.
|
|
1689++ 8E2B
|
|
1690++ 8E2B ;Size (minimal build for ZX Spectrum):
|
|
1691++ 8E2B ;Code block #908 bytes
|
|
1692++ 8E2B ;Variables #2BF bytes (can be stripped)
|
|
1693++ 8E2B ;Total size #908+#2BF=#BC7 (3015) bytes
|
|
1694++ 8E2B
|
|
1695++ 8E2B ENDMOD
|
|
1696++ 8E2B
|
|
1697++ 8E2B endif
|
|
1698++ 8E2B
|
|
0418+ 8E2B include "pt3.asm"
|
|
0001++ 8E2B ifndef _pt3_asm_defined
|
|
0002++ 8E2B define _pt3_asm_defined
|
|
0003++ 8E2B
|
|
0004++ 8E2B module PT3
|
|
0005++ 8E2B
|
|
0006++ 8E2B struct Header
|
|
0007++ 8E2B~ Id ds 13 ; usually 'Protracker 3.'
|
|
0008++ 8E2B~ Subversion
|
|
0009++ 8E2B~ db 0
|
|
0010++ 8E2B~ Description
|
|
0011++ 8E2B~ ds 84 ; usually ' compilation of ' + Name[32] + ' by ' + Author[32]
|
|
0012++ 8E2B~ Mode db 0
|
|
0013++ 8E2B~ FreqTable
|
|
0014++ 8E2B~ db 0 ;assume 0..04
|
|
0015++ 8E2B~ Tempo db 0 ;01-ff
|
|
0016++ 8E2B~ Length db 0
|
|
0017++ 8E2B~ Loop db 0
|
|
0018++ 8E2B~ Patterns
|
|
0019++ 8E2B~ dw 0 ;? 00-01
|
|
0020++ 8E2B~ Samples
|
|
0021++ 8E2B~ ds 64 ;(? 00-bf}{32}
|
|
0022++ 8E2B~ Ornaments
|
|
0023++ 8E2B~ ds 32 ;(? 00-d9){16}
|
|
0024++ 8E2B~ Positions
|
|
0025++ 8E2B~ db 0 ;*3&00-fe
|
|
0026++ 8E2B~ db 0 ;*3|ff
|
|
0027++ 8E2B ends
|
|
0028++ 8E2B
|
|
0029++ 8E2B Start
|
|
0030++ 8E2B ifndef NoPrologue
|
|
0031++ 8E2B~ ld hl,End
|
|
0032++ 8E2B~ jr Init
|
|
0033++ 8E2B~ jp PTS.PLAY
|
|
0034++ 8E2B~ jp PTS.MUTE
|
|
0035++ 8E2B endif
|
|
0036++ 8E2B
|
|
0037++ 8E2B 3E 20 Init ld a,PTS.SETUP.TSPT3
|
|
0038++ 8E2D C3 6C 82 jp PTS.INIT
|
|
0039++ 8E30
|
|
0040++ 8E30 ifdef HaveFormatCheck
|
|
0041++ 8E30 include "format.asm"
|
|
0001+++8E30 ;some format checking macros
|
|
0002+++8E30 ifndef _format_asm_defined
|
|
0003+++8E30 define _format_asm_defined
|
|
0004+++8E30
|
|
0005+++8E30 macro LessOrEqual number
|
|
0006+++8E30~ ld a,number
|
|
0007+++8E30~ cp (hl)
|
|
0008+++8E30~ inc hl
|
|
0009+++8E30~ ret c
|
|
0010+++8E30 endm
|
|
0011+++8E30
|
|
0012+++8E30 macro Greater number
|
|
0013+++8E30~ ld a,(hl)
|
|
0014+++8E30~ inc hl
|
|
0015+++8E30~ cp number
|
|
0016+++8E30~ ret c
|
|
0017+++8E30 endm
|
|
0018+++8E30
|
|
0019+++8E30 macro AnyByte
|
|
0020+++8E30~ inc hl
|
|
0021+++8E30 endm
|
|
0022+++8E30
|
|
0023+++8E30 macro AnyBytes count
|
|
0024+++8E30~ if count > 7
|
|
0025+++8E30~ ld a,l
|
|
0026+++8E30~ add a,count
|
|
0027+++8E30~ ld l,a
|
|
0028+++8E30~ adc a,h
|
|
0029+++8E30~ sub l
|
|
0030+++8E30~ ld h,a
|
|
0031+++8E30~ else
|
|
0032+++8E30~ dup count
|
|
0033+++8E30~ inc hl
|
|
0034+++8E30~ edup
|
|
0035+++8E30~ endif
|
|
0036+++8E30 endm
|
|
0037+++8E30
|
|
0038+++8E30 macro EqualTo number
|
|
0039+++8E30~ ld a,number
|
|
0040+++8E30~ cp (hl)
|
|
0041+++8E30~ inc hl
|
|
0042+++8E30~ ret nz
|
|
0043+++8E30 endm
|
|
0044+++8E30
|
|
0045+++8E30 endif
|
|
0046+++8E30
|
|
0042++ 8E30
|
|
0043++ 8E30 ;in HL - module addr
|
|
0044++ 8E30 ;out Z - is pt3
|
|
0045++ 8E30 CheckFormat
|
|
0046++ 8E30 ; meta
|
|
0047++ 8E30 AnyBytes Header.FreqTable
|
|
0047++ 8E30 7D > ld a,l
|
|
0047++ 8E31 C6 63 > add a,count
|
|
0047++ 8E33 6F > ld l,a
|
|
0047++ 8E34 8C > adc a,h
|
|
0047++ 8E35 95 > sub l
|
|
0047++ 8E36 67 > ld h,a
|
|
0048++ 8E37 ;FreqTable
|
|
0049++ 8E37 LessOrEqual 4
|
|
0049++ 8E37 3E 04 > ld a,number
|
|
0049++ 8E39 BE > cp (hl)
|
|
0049++ 8E3A 23 > inc hl
|
|
0049++ 8E3B D8 > ret c
|
|
0050++ 8E3C ;Tempo
|
|
0051++ 8E3C Greater 1
|
|
0051++ 8E3C 7E > ld a,(hl)
|
|
0051++ 8E3D 23 > inc hl
|
|
0051++ 8E3E FE 01 > cp number
|
|
0051++ 8E40 D8 > ret c
|
|
0052++ 8E41 ;Length
|
|
0053++ 8E41 AnyByte
|
|
0053++ 8E41 23 > inc hl
|
|
0054++ 8E42 ;Loop
|
|
0055++ 8E42 AnyByte
|
|
0055++ 8E42 23 > inc hl
|
|
0056++ 8E43 ;Patterns
|
|
0057++ 8E43 AnyByte
|
|
0057++ 8E43 23 > inc hl
|
|
0058++ 8E44 LessOrEqual 1
|
|
0058++ 8E44 3E 01 > ld a,number
|
|
0058++ 8E46 BE > cp (hl)
|
|
0058++ 8E47 23 > inc hl
|
|
0058++ 8E48 D8 > ret c
|
|
0059++ 8E49 ;Samples
|
|
0060++ 8E49 06 20 ld b,(Header.Ornaments-Header.Samples)/2
|
|
0061++ 8E4B .samples
|
|
0062++ 8E4B AnyByte
|
|
0062++ 8E4B 23 > inc hl
|
|
0063++ 8E4C LessOrEqual #bf
|
|
0063++ 8E4C 3E BF > ld a,number
|
|
0063++ 8E4E BE > cp (hl)
|
|
0063++ 8E4F 23 > inc hl
|
|
0063++ 8E50 D8 > ret c
|
|
0064++ 8E51 10 F8 djnz .samples
|
|
0065++ 8E53 ;Ornaments
|
|
0066++ 8E53 06 10 ld b,(Header.Positions-Header.Ornaments)/2
|
|
0067++ 8E55 .ornaments
|
|
0068++ 8E55 AnyByte
|
|
0068++ 8E55 23 > inc hl
|
|
0069++ 8E56 LessOrEqual #d9
|
|
0069++ 8E56 3E D9 > ld a,number
|
|
0069++ 8E58 BE > cp (hl)
|
|
0069++ 8E59 23 > inc hl
|
|
0069++ 8E5A D8 > ret c
|
|
0070++ 8E5B 10 F8 djnz .ornaments
|
|
0071++ 8E5D ;Positions
|
|
0072++ 8E5D ;255 at first position is denied
|
|
0073++ 8E5D LessOrEqual 254
|
|
0073++ 8E5D 3E FE > ld a,number
|
|
0073++ 8E5F BE > cp (hl)
|
|
0073++ 8E60 23 > inc hl
|
|
0073++ 8E61 D8 > ret c
|
|
0074++ 8E62 06 00 ld b,0
|
|
0075++ 8E64 2B dec hl
|
|
0076++ 8E65 .positions
|
|
0077++ 8E65 7E ld a,(hl)
|
|
0078++ 8E66 23 inc hl
|
|
0079++ 8E67 FE FF cp 255
|
|
0080++ 8E69 C8 ret z ;finish
|
|
0081++ 8E6A ;check is multiple of 3
|
|
0082++ 8E6A A7 .div3 and a
|
|
0083++ 8E6B 28 05 jr z,.posok
|
|
0084++ 8E6D D6 03 sub 3
|
|
0085++ 8E6F D8 ret c
|
|
0086++ 8E70 20 F8 jr nz,.div3
|
|
0087++ 8E72 10 F1 .posok djnz .positions
|
|
0088++ 8E74 ;fall through
|
|
0089++ 8E74 7C .fail ld a,h
|
|
0090++ 8E75 A7 and a ;reset Z
|
|
0091++ 8E76 C9 ret
|
|
0092++ 8E77
|
|
0093++ 8E77 display "PT3 checker size: ",$-CheckFormat
|
|
0094++ 8E77 endif
|
|
0095++ 8E77
|
|
0096++ 8E77 endmod
|
|
0097++ 8E77
|
|
0098++ 8E77 include "PTSPlay.asm"
|
|
0001+++8E77 ifndef _pts_asm_defined
|
|
0002+++8E77~ define _pts_asm_defined
|
|
0003+++8E77~ 0004+++8E77~ MODULE PTS
|
|
0005+++8E77~
|
|
0006+++8E77~ ;Universal PT2'n'PT3 Turbo Sound player for ZX Spectrum
|
|
0007+++8E77~ ;(c)2004-2007 S.V.Bulba <vorobey@mail.khstu.ru>
|
|
0008+++8E77~ ;Specially for AlCo
|
|
0009+++8E77~ ;http://bulba.untergrund.net/ (http://bulba.at.kz/)
|
|
0010+++8E77~ 0011+++8E77~ ;Release number
|
|
0012+++8E77~ Release EQU "0"
|
|
0013+++8E77~ 0014+++8E77~ ;Conditional assembly
|
|
0015+++8E77~ ;1) Current position counters at (Vars1+0) and (Vars2+0)
|
|
0016+++8E77~ CurPosCounter=0
|
|
0017+++8E77~ ;2) Allow channels allocation bits at (SETUP)
|
|
0018+++8E77~ ACBBAC=0
|
|
0019+++8E77~ ;3) Allow loop checking and disabling
|
|
0020+++8E77~ LoopChecker=0
|
|
0021+++8E77~ ;4) Insert official identificator
|
|
0022+++8E77~ Id=0
|
|
0023+++8E77~ ;5) Set IY for correct return to ZX Basic
|
|
0024+++8E77~ Basic=0
|
|
0025+++8E77~ 0026+++8E77~ ;Features
|
|
0027+++8E77~ ;--------
|
|
0028+++8E77~ ;-Can be compiled at any address (i.e. no need rounding ORG
|
|
0029+++8E77~ ; address).
|
|
0030+++8E77~ ;-Variables (VARS) can be located at any address (not only after
|
|
0031+++8E77~ ; code block).
|
|
0032+++8E77~ ;-INIT subprogram checks PT3-module version and rightly
|
|
0033+++8E77~ ; generates both note and volume tables outside of code block
|
|
0034+++8E77~ ; (in VARS).
|
|
0035+++8E77~ ;-Two portamento (spc. command 3xxx) algorithms (depending of
|
|
0036+++8E77~ ; PT3 module version).
|
|
0037+++8E77~ ;-New 1.XX and 2.XX special command behaviour (only for PT v3.7
|
|
0038+++8E77~ ; and higher).
|
|
0039+++8E77~ ;-Any Tempo value are accepted (including Tempo=1 and Tempo=2).
|
|
0040+++8E77~ ;-TS modes: 2xPT3, 2xPT2 and PT v3.7 TS standard.
|
|
0041+++8E77~ ;-Fully compatible with Ay_Emul PT3 and PT2 players codes.
|
|
0042+++8E77~ ;-See also notes at the end of this source code.
|
|
0043+++8E77~ 0044+++8E77~ ;Limitations
|
|
0045+++8E77~ ;-----------
|
|
0046+++8E77~ ;-Can run in RAM only (self-modified code is used).
|
|
0047+++8E77~ ;-PT2 position list must be end by #FF marker only.
|
|
0048+++8E77~ 0049+++8E77~ ;Warning!!! PLAY subprogram can crash if no module are loaded
|
|
0050+++8E77~ ;into RAM or INIT subprogram was not called before.
|
|
0051+++8E77~ 0052+++8E77~ ;Call MUTE or INIT one more time to mute sound after stopping
|
|
0053+++8E77~ ;playing
|
|
0054+++8E77~ 0055+++8E77~ TonA EQU 0
|
|
0056+++8E77~ TonB EQU 2
|
|
0057+++8E77~ TonC EQU 4
|
|
0058+++8E77~ Noise EQU 6
|
|
0059+++8E77~ Mixer EQU 7
|
|
0060+++8E77~ AmplA EQU 8
|
|
0061+++8E77~ AmplB EQU 9
|
|
0062+++8E77~ AmplC EQU 10
|
|
0063+++8E77~ Env EQU 11
|
|
0064+++8E77~ EnvTp EQU 13
|
|
0065+++8E77~ 0066+++8E77~ START
|
|
0067+++8E77~ 0068+++8E77~ SETUP.NOLOOP EQU 1
|
|
0069+++8E77~ SETUP.PT2 EQU 2
|
|
0070+++8E77~ SETUP.ACB EQU 4
|
|
0071+++8E77~ SETUP.BAC EQU 8
|
|
0072+++8E77~ SETUP.TS02 EQU 16
|
|
0073+++8E77~ SETUP.TSPT3 EQU 32
|
|
0074+++8E77~ 0075+++8E77~ SETUP DB 0 ;set bit0, if you want to play without looping
|
|
0076+++8E77~ ;(optional);
|
|
0077+++8E77~ ;set bit1 for PT2 and reset for PT3 before
|
|
0078+++8E77~ ;calling INIT;
|
|
0079+++8E77~ ;bits2-3: %00-ABC, %01-ACB, %10-BAC (optional);
|
|
0080+++8E77~ ;bits4-5: %00-no TS, %01-2 modules TS, %10-
|
|
0081+++8E77~ ;autodetect PT3 TS-format by AlCo (PT 3.7+);
|
|
0082+++8E77~ ;Remark: old PT3 TS-format by AlCo (PT 3.6) is not
|
|
0083+++8E77~ ;documented and must be converted to new standard.
|
|
0084+++8E77~ ;bit6 is set each time, when loop point of 2nd TS
|
|
0085+++8E77~ ;module is passed (optional).
|
|
0086+++8E77~ ;bit7 is set each time, when loop point of 1st TS
|
|
0087+++8E77~ ;or of single module is passed (optional).
|
|
0088+++8E77~ 0089+++8E77~ ;Identifier
|
|
0090+++8E77~ IF Id
|
|
0091+++8E77~ DB "=UniPT2/PT3/TS-Player r.",Release,"="
|
|
0092+++8E77~ ENDIF
|
|
0093+++8E77~ 0094+++8E77~ IF LoopChecker
|
|
0095+++8E77~ CHECKLP LD HL,SETUP
|
|
0096+++8E77~ BIT 0,(IY-100+VRS.ModNum)
|
|
0097+++8E77~ JR Z,CHL1
|
|
0098+++8E77~ SET 6,(HL)
|
|
0099+++8E77~ JR CHL2
|
|
0100+++8E77~ CHL1 SET 7,(HL)
|
|
0101+++8E77~ CHL2 BIT 0,(HL)
|
|
0102+++8E77~ RET Z
|
|
0103+++8E77~ POP HL
|
|
0104+++8E77~ INC (IY-100+VRS.DelyCnt)
|
|
0105+++8E77~ INC (IY-100+VRS.ChanA+CHP.NtSkCn)
|
|
0106+++8E77~ XOR A
|
|
0107+++8E77~ LD (IY-100+VRS.AYREGS+AmplA),A
|
|
0108+++8E77~ LD (IY-100+VRS.AYREGS+AmplB),A
|
|
0109+++8E77~ LD (IY-100+VRS.AYREGS+AmplC),A
|
|
0110+++8E77~ RET
|
|
0111+++8E77~ ENDIF
|
|
0112+++8E77~ 0113+++8E77~ MUTE XOR A
|
|
0114+++8E77~ LD H,A
|
|
0115+++8E77~ LD L,A
|
|
0116+++8E77~ LD (VARS1+VRS.AYREGS+AmplA),A
|
|
0117+++8E77~ LD (VARS1+VRS.AYREGS+AmplB),HL
|
|
0118+++8E77~ LD (VARS2+VRS.AYREGS+AmplA),A
|
|
0119+++8E77~ LD (VARS2+VRS.AYREGS+AmplB),HL
|
|
0120+++8E77~ JP ROUT
|
|
0121+++8E77~ 0122+++8E77~ INIT
|
|
0123+++8E77~ ;HL - AddressOfModule
|
|
0124+++8E77~ ;DE - AddresOf2ndModule
|
|
0125+++8E77~ ;A - mode
|
|
0126+++8E77~ PUSH DE
|
|
0127+++8E77~ PUSH HL
|
|
0128+++8E77~ LD HL,VARS
|
|
0129+++8E77~ LD (HL),0
|
|
0130+++8E77~ LD DE,VARS+1
|
|
0131+++8E77~ LD BC,VAR0END-VARS-1
|
|
0132+++8E77~ LDIR
|
|
0133+++8E77~ INC HL
|
|
0134+++8E77~ LD (VARS1+VRS.AdInPtA),HL ;ptr to zero
|
|
0135+++8E77~ LD (VARS2+VRS.AdInPtA),HL
|
|
0136+++8E77~ 0137+++8E77~ POP HL
|
|
0138+++8E77~ LD IY,VARS1+100
|
|
0139+++8E77~ LD (SETUP),A
|
|
0140+++8E77~ AND SETUP.PT2
|
|
0141+++8E77~ JP NZ,I_PT2
|
|
0142+++8E77~ 0143+++8E77~ CALL INITPT3
|
|
0144+++8E77~ LD HL,(e_-SamCnv-2)*256+#18
|
|
0145+++8E77~ LD (SamCnv),HL
|
|
0146+++8E77~ LD A,#BA
|
|
0147+++8E77~ LD (OrnCP),A
|
|
0148+++8E77~ LD (SamCP),A
|
|
0149+++8E77~ LD A,#7B
|
|
0150+++8E77~ LD (OrnLD),A
|
|
0151+++8E77~ LD (SamLD),A
|
|
0152+++8E77~ LD A,#87
|
|
0153+++8E77~ LD (SamClc2),A
|
|
0154+++8E77~ POP HL
|
|
0155+++8E77~ ;Use version and ton table of 1st module
|
|
0156+++8E77~ LD A,(IX+13-100) ;EXTRACT VERSION NUMBER
|
|
0157+++8E77~ SUB #30
|
|
0158+++8E77~ JR C,L20
|
|
0159+++8E77~ CP 10
|
|
0160+++8E77~ JR C,L21
|
|
0161+++8E77~ L20 LD A,6
|
|
0162+++8E77~ L21 LD (Version),A
|
|
0163+++8E77~ PUSH AF ;VolTable version
|
|
0164+++8E77~ CP 4
|
|
0165+++8E77~ LD A,(IX+99-100) ;TONE TABLE NUMBER
|
|
0166+++8E77~ RLA
|
|
0167+++8E77~ AND 7
|
|
0168+++8E77~ PUSH AF ;NoteTable number
|
|
0169+++8E77~ 0170+++8E77~ LD IY,VARS2+100
|
|
0171+++8E77~ LD A,(SETUP)
|
|
0172+++8E77~ AND SETUP.TS02|SETUP.TSPT3
|
|
0173+++8E77~ JR Z,NOTS
|
|
0174+++8E77~ CP SETUP.TS02
|
|
0175+++8E77~ JR Z,TwoPT3s
|
|
0176+++8E77~ LD A,(Version)
|
|
0177+++8E77~ CP 7
|
|
0178+++8E77~ JR C,NOTS
|
|
0179+++8E77~ LD A,(IX+98-100) ;ALCO TS MARKER
|
|
0180+++8E77~ CP #20
|
|
0181+++8E77~ JR Z,NOTS
|
|
0182+++8E77~ LD HL,VARS1
|
|
0183+++8E77~ LD DE,VARS2
|
|
0184+++8E77~ LD BC,VRS
|
|
0185+++8E77~ LDIR
|
|
0186+++8E77~ SET 1,(IY-100+VRS.ModNum)
|
|
0187+++8E77~ LD C,A
|
|
0188+++8E77~ ADD A,A
|
|
0189+++8E77~ ADD A,C
|
|
0190+++8E77~ SUB 2
|
|
0191+++8E77~ LD (TSSub),A
|
|
0192+++8E77~ JR AlCoTS_
|
|
0193+++8E77~ TwoPT3s CALL INITPT3
|
|
0194+++8E77~ AlCoTS_ LD A,1
|
|
0195+++8E77~ LD (is_ts),A
|
|
0196+++8E77~ SET 0,(IY-100+VRS.ModNum)
|
|
0197+++8E77~ 0198+++8E77~ NOTS LD BC,PT3PD
|
|
0199+++8E77~ LD HL,0
|
|
0200+++8E77~ LD DE,PT3EMPTYORN
|
|
0201+++8E77~ JR INITCOMMON
|
|
0202+++8E77~ 0203+++8E77~ I_PT2 CALL INITPT2
|
|
0204+++8E77~ LD HL,#51CB
|
|
0205+++8E77~ LD (SamCnv),HL
|
|
0206+++8E77~ LD A,#BB
|
|
0207+++8E77~ LD (OrnCP),A
|
|
0208+++8E77~ LD (SamCP),A
|
|
0209+++8E77~ LD A,#7A
|
|
0210+++8E77~ LD (OrnLD),A
|
|
0211+++8E77~ LD (SamLD),A
|
|
0212+++8E77~ LD A,#80
|
|
0213+++8E77~ LD (SamClc2),A
|
|
0214+++8E77~ POP HL
|
|
0215+++8E77~ LD A,5
|
|
0216+++8E77~ LD (Version),A
|
|
0217+++8E77~ PUSH AF
|
|
0218+++8E77~ LD A,2
|
|
0219+++8E77~ PUSH AF
|
|
0220+++8E77~ 0221+++8E77~ LD A,(SETUP)
|
|
0222+++8E77~ AND SETUP.TS02|SETUP.TSPT3
|
|
0223+++8E77~ JR Z,NOTS2
|
|
0224+++8E77~ 0225+++8E77~ LD IY,VARS2+100
|
|
0226+++8E77~ LD A,1
|
|
0227+++8E77~ LD (is_ts),A
|
|
0228+++8E77~ SET 0,(IY-100+VRS.ModNum)
|
|
0229+++8E77~ CALL INITPT2
|
|
0230+++8E77~ 0231+++8E77~ NOTS2 LD BC,PT2PD
|
|
0232+++8E77~ LD HL,#8687
|
|
0233+++8E77~ LD DE,PT2EMPTYORN
|
|
0234+++8E77~ 0235+++8E77~ INITCOMMON
|
|
0236+++8E77~ 0237+++8E77~ IF Basic
|
|
0238+++8E77~ LD IY,#5C3A
|
|
0239+++8E77~ ENDIF
|
|
0240+++8E77~ 0241+++8E77~ LD (PTDEC),BC
|
|
0242+++8E77~ LD (PsCalc),HL
|
|
0243+++8E77~ PUSH DE
|
|
0244+++8E77~ 0245+++8E77~ ;note table data depacker
|
|
0246+++8E77~ ;(c) Ivan Roshin
|
|
0247+++8E77~ LD DE,T_PACK
|
|
0248+++8E77~ LD BC,T1_+(2*49)-1
|
|
0249+++8E77~ TP_0 LD A,(DE)
|
|
0250+++8E77~ INC DE
|
|
0251+++8E77~ CP 15*2
|
|
0252+++8E77~ JR NC,TP_1
|
|
0253+++8E77~ LD H,A
|
|
0254+++8E77~ LD A,(DE)
|
|
0255+++8E77~ LD L,A
|
|
0256+++8E77~ INC DE
|
|
0257+++8E77~ JR TP_2
|
|
0258+++8E77~ TP_1 PUSH DE
|
|
0259+++8E77~ LD D,0
|
|
0260+++8E77~ LD E,A
|
|
0261+++8E77~ ADD HL,DE
|
|
0262+++8E77~ ADD HL,DE
|
|
0263+++8E77~ POP DE
|
|
0264+++8E77~ TP_2 LD A,H
|
|
0265+++8E77~ LD (BC),A
|
|
0266+++8E77~ DEC BC
|
|
0267+++8E77~ LD A,L
|
|
0268+++8E77~ LD (BC),A
|
|
0269+++8E77~ DEC BC
|
|
0270+++8E77~ SUB (#F8*2)&255
|
|
0271+++8E77~ JR NZ,TP_0
|
|
0272+++8E77~ 0273+++8E77~ INC A
|
|
0274+++8E77~ LD (VARS1+VRS.DelyCnt),A
|
|
0275+++8E77~ LD (VARS2+VRS.DelyCnt),A
|
|
0276+++8E77~ LD HL,#F001 ;H - CHP.Volume, L - CHP.NtSkCn
|
|
0277+++8E77~ LD (VARS1+VRS.ChanA+CHP.NtSkCn),HL
|
|
0278+++8E77~ LD (VARS1+VRS.ChanB+CHP.NtSkCn),HL
|
|
0279+++8E77~ LD (VARS1+VRS.ChanC+CHP.NtSkCn),HL
|
|
0280+++8E77~ LD (VARS2+VRS.ChanA+CHP.NtSkCn),HL
|
|
0281+++8E77~ LD (VARS2+VRS.ChanB+CHP.NtSkCn),HL
|
|
0282+++8E77~ LD (VARS2+VRS.ChanC+CHP.NtSkCn),HL
|
|
0283+++8E77~ POP HL
|
|
0284+++8E77~ LD (VARS1+VRS.ChanA+CHP.OrnPtr),HL
|
|
0285+++8E77~ LD (VARS1+VRS.ChanB+CHP.OrnPtr),HL
|
|
0286+++8E77~ LD (VARS1+VRS.ChanC+CHP.OrnPtr),HL
|
|
0287+++8E77~ LD (VARS2+VRS.ChanA+CHP.OrnPtr),HL
|
|
0288+++8E77~ LD (VARS2+VRS.ChanB+CHP.OrnPtr),HL
|
|
0289+++8E77~ LD (VARS2+VRS.ChanC+CHP.OrnPtr),HL
|
|
0290+++8E77~ 0291+++8E77~ POP AF
|
|
0292+++8E77~ 0293+++8E77~ ;NoteTableCreator (c) Ivan Roshin
|
|
0294+++8E77~ ;A - NoteTableNumber*2+VersionForNoteTable
|
|
0295+++8E77~ ;(xx1b - 3.xx..3.4r, xx0b - 3.4x..3.6x..VTII1.0)
|
|
0296+++8E77~ 0297+++8E77~ LD HL,NT_DATA
|
|
0298+++8E77~ LD D,0
|
|
0299+++8E77~ ADD A,A
|
|
0300+++8E77~ LD E,A
|
|
0301+++8E77~ ADD HL,DE
|
|
0302+++8E77~ LD E,(HL)
|
|
0303+++8E77~ INC HL
|
|
0304+++8E77~ SRL E
|
|
0305+++8E77~ SBC A,A
|
|
0306+++8E77~ AND #A7 ;#00 (NOP) or #A7 (AND A)
|
|
0307+++8E77~ LD (L3),A
|
|
0308+++8E77~ EX DE,HL
|
|
0309+++8E77~ LD BC,T1_
|
|
0310+++8E77~ ADD HL,BC
|
|
0311+++8E77~ 0312+++8E77~ LD A,(DE)
|
|
0313+++8E77~ ADD A,T_&255
|
|
0314+++8E77~ LD C,A
|
|
0315+++8E77~ ADC A,T_/256
|
|
0316+++8E77~ SUB C
|
|
0317+++8E77~ LD B,A
|
|
0318+++8E77~ PUSH BC
|
|
0319+++8E77~ LD DE,NT_
|
|
0320+++8E77~ PUSH DE
|
|
0321+++8E77~ 0322+++8E77~ LD B,12
|
|
0323+++8E77~ L1 PUSH BC
|
|
0324+++8E77~ LD C,(HL)
|
|
0325+++8E77~ INC HL
|
|
0326+++8E77~ PUSH HL
|
|
0327+++8E77~ LD B,(HL)
|
|
0328+++8E77~ 0329+++8E77~ PUSH DE
|
|
0330+++8E77~ EX DE,HL
|
|
0331+++8E77~ LD DE,23
|
|
0332+++8E77~ LD IXH,8
|
|
0333+++8E77~ 0334+++8E77~ L2 SRL B
|
|
0335+++8E77~ RR C
|
|
0336+++8E77~ L3 DB #19 ;AND A or NOP
|
|
0337+++8E77~ LD A,C
|
|
0338+++8E77~ ADC A,D ;=ADC 0
|
|
0339+++8E77~ LD (HL),A
|
|
0340+++8E77~ INC HL
|
|
0341+++8E77~ LD A,B
|
|
0342+++8E77~ ADC A,D
|
|
0343+++8E77~ LD (HL),A
|
|
0344+++8E77~ ADD HL,DE
|
|
0345+++8E77~ DEC IXH
|
|
0346+++8E77~ JR NZ,L2
|
|
0347+++8E77~ 0348+++8E77~ POP DE
|
|
0349+++8E77~ INC DE
|
|
0350+++8E77~ INC DE
|
|
0351+++8E77~ POP HL
|
|
0352+++8E77~ INC HL
|
|
0353+++8E77~ POP BC
|
|
0354+++8E77~ DJNZ L1
|
|
0355+++8E77~ 0356+++8E77~ POP HL
|
|
0357+++8E77~ POP DE
|
|
0358+++8E77~ 0359+++8E77~ LD A,E
|
|
0360+++8E77~ CP TCOLD_1&255
|
|
0361+++8E77~ JR NZ,CORR_1
|
|
0362+++8E77~ LD A,#FD
|
|
0363+++8E77~ LD (NT_+#2E),A
|
|
0364+++8E77~ 0365+++8E77~ CORR_1 LD A,(DE)
|
|
0366+++8E77~ AND A
|
|
0367+++8E77~ JR Z,TC_EXIT
|
|
0368+++8E77~ RRA
|
|
0369+++8E77~ PUSH AF
|
|
0370+++8E77~ ADD A,A
|
|
0371+++8E77~ LD C,A
|
|
0372+++8E77~ ADD HL,BC
|
|
0373+++8E77~ POP AF
|
|
0374+++8E77~ JR NC,CORR_2
|
|
0375+++8E77~ DEC (HL)
|
|
0376+++8E77~ DEC (HL)
|
|
0377+++8E77~ CORR_2 INC (HL)
|
|
0378+++8E77~ AND A
|
|
0379+++8E77~ SBC HL,BC
|
|
0380+++8E77~ INC DE
|
|
0381+++8E77~ JR CORR_1
|
|
0382+++8E77~ 0383+++8E77~ TC_EXIT
|
|
0384+++8E77~ 0385+++8E77~ POP AF
|
|
0386+++8E77~ 0387+++8E77~ ;VolTableCreator (c) Ivan Roshin
|
|
0388+++8E77~ ;A - VersionForVolumeTable (0..4 - 3.xx..3.4x;
|
|
0389+++8E77~ ;5.. - 2.x,3.5x..3.6x..VTII1.0)
|
|
0390+++8E77~ 0391+++8E77~ CP 5
|
|
0392+++8E77~ LD HL,#11
|
|
0393+++8E77~ LD D,H
|
|
0394+++8E77~ LD E,H
|
|
0395+++8E77~ LD A,#17
|
|
0396+++8E77~ JR NC,M1
|
|
0397+++8E77~ DEC L
|
|
0398+++8E77~ LD E,L
|
|
0399+++8E77~ XOR A
|
|
0400+++8E77~ M1 LD (M2),A
|
|
0401+++8E77~ 0402+++8E77~ LD IX,VT_+16
|
|
0403+++8E77~ 0404+++8E77~ LD C,#F
|
|
0405+++8E77~ INITV2 PUSH HL
|
|
0406+++8E77~ 0407+++8E77~ ADD HL,DE
|
|
0408+++8E77~ EX DE,HL
|
|
0409+++8E77~ SBC HL,HL
|
|
0410+++8E77~ 0411+++8E77~ LD B,#10
|
|
0412+++8E77~ INITV1 LD A,L
|
|
0413+++8E77~ M2 DB #7D
|
|
0414+++8E77~ LD A,H
|
|
0415+++8E77~ ADC A,0
|
|
0416+++8E77~ LD (IX),A
|
|
0417+++8E77~ INC IX
|
|
0418+++8E77~ ADD HL,DE
|
|
0419+++8E77~ DJNZ INITV1
|
|
0420+++8E77~ 0421+++8E77~ POP HL
|
|
0422+++8E77~ LD A,E
|
|
0423+++8E77~ CP #77
|
|
0424+++8E77~ JR NZ,M3
|
|
0425+++8E77~ INC E
|
|
0426+++8E77~ M3 DEC C
|
|
0427+++8E77~ JR NZ,INITV2
|
|
0428+++8E77~ 0429+++8E77~ JP ROUT
|
|
0430+++8E77~ 0431+++8E77~ INITPT3 CALL SETMDAD
|
|
0432+++8E77~ PUSH HL
|
|
0433+++8E77~ LD DE,100
|
|
0434+++8E77~ ADD HL,DE
|
|
0435+++8E77~ LD A,(HL)
|
|
0436+++8E77~ LD (IY-100+VRS.Delay),A
|
|
0437+++8E77~ PUSH HL
|
|
0438+++8E77~ POP IX
|
|
0439+++8E77~ ADD HL,DE
|
|
0440+++8E77~ CALL SETCPPT
|
|
0441+++8E77~ LD E,(IX+102-100)
|
|
0442+++8E77~ INC HL
|
|
0443+++8E77~ 0444+++8E77~ IF CurPosCounter
|
|
0445+++8E77~ LD (IY-100+VRS.PosSub),L
|
|
0446+++8E77~ ENDIF
|
|
0447+++8E77~ 0448+++8E77~ ADD HL,DE
|
|
0449+++8E77~ CALL SETLPPT
|
|
0450+++8E77~ POP DE
|
|
0451+++8E77~ LD L,(IX+103-100)
|
|
0452+++8E77~ LD H,(IX+104-100)
|
|
0453+++8E77~ ADD HL,DE
|
|
0454+++8E77~ CALL SETPTPT
|
|
0455+++8E77~ LD HL,169
|
|
0456+++8E77~ ADD HL,DE
|
|
0457+++8E77~ CALL SETORPT
|
|
0458+++8E77~ LD HL,105
|
|
0459+++8E77~ ADD HL,DE
|
|
0460+++8E77~ 0461+++8E77~ SETSMPT LD (IY-100+VRS.SamPtrs),L
|
|
0462+++8E77~ LD (IY-100+VRS.SamPtrs+1),H
|
|
0463+++8E77~ RET
|
|
0464+++8E77~ 0465+++8E77~ INITPT2 LD A,(HL)
|
|
0466+++8E77~ LD (IY-100+VRS.Delay),A
|
|
0467+++8E77~ PUSH HL
|
|
0468+++8E77~ PUSH HL
|
|
0469+++8E77~ PUSH HL
|
|
0470+++8E77~ INC HL
|
|
0471+++8E77~ INC HL
|
|
0472+++8E77~ LD A,(HL)
|
|
0473+++8E77~ INC HL
|
|
0474+++8E77~ CALL SETSMPT
|
|
0475+++8E77~ LD E,(HL)
|
|
0476+++8E77~ INC HL
|
|
0477+++8E77~ LD D,(HL)
|
|
0478+++8E77~ POP HL
|
|
0479+++8E77~ AND A
|
|
0480+++8E77~ SBC HL,DE
|
|
0481+++8E77~ CALL SETMDAD
|
|
0482+++8E77~ POP HL
|
|
0483+++8E77~ LD DE,67
|
|
0484+++8E77~ ADD HL,DE
|
|
0485+++8E77~ CALL SETORPT
|
|
0486+++8E77~ LD E,32
|
|
0487+++8E77~ ADD HL,DE
|
|
0488+++8E77~ LD C,(HL)
|
|
0489+++8E77~ INC HL
|
|
0490+++8E77~ LD B,(HL)
|
|
0491+++8E77~ LD E,30
|
|
0492+++8E77~ ADD HL,DE
|
|
0493+++8E77~ CALL SETCPPT
|
|
0494+++8E77~ LD E,A
|
|
0495+++8E77~ INC HL
|
|
0496+++8E77~ 0497+++8E77~ IF CurPosCounter
|
|
0498+++8E77~ LD (IY-100+VRS.PosSub),L
|
|
0499+++8E77~ ENDIF
|
|
0500+++8E77~ 0501+++8E77~ ADD HL,DE
|
|
0502+++8E77~ CALL SETLPPT
|
|
0503+++8E77~ POP HL
|
|
0504+++8E77~ ADD HL,BC
|
|
0505+++8E77~ 0506+++8E77~ SETPTPT LD (IY-100+VRS.PatsPtr),L
|
|
0507+++8E77~ LD (IY-100+VRS.PatsPtr+1),H
|
|
0508+++8E77~ RET
|
|
0509+++8E77~ 0510+++8E77~ SETMDAD LD (IY-100+VRS.MODADDR),L
|
|
0511+++8E77~ LD (IY-100+VRS.MODADDR+1),H
|
|
0512+++8E77~ RET
|
|
0513+++8E77~ 0514+++8E77~ SETORPT LD (IY-100+VRS.OrnPtrs),L
|
|
0515+++8E77~ LD (IY-100+VRS.OrnPtrs+1),H
|
|
0516+++8E77~ RET
|
|
0517+++8E77~ 0518+++8E77~ SETCPPT LD (IY-100+VRS.CrPsPtr),L
|
|
0519+++8E77~ LD (IY-100+VRS.CrPsPtr+1),H
|
|
0520+++8E77~ RET
|
|
0521+++8E77~ 0522+++8E77~ SETLPPT LD (IY-100+VRS.LPosPtr),L
|
|
0523+++8E77~ LD (IY-100+VRS.LPosPtr+1),H
|
|
0524+++8E77~ RET
|
|
0525+++8E77~ 0526+++8E77~ SETENBS LD (IY-100+VRS.EnvBase),L
|
|
0527+++8E77~ LD (IY-100+VRS.EnvBase+1),H
|
|
0528+++8E77~ RET
|
|
0529+++8E77~ 0530+++8E77~ SETESLD LD (IY-100+VRS.CurESld),L
|
|
0531+++8E77~ LD (IY-100+VRS.CurESld+1),H
|
|
0532+++8E77~ RET
|
|
0533+++8E77~ 0534+++8E77~ GETIX PUSH IY
|
|
0535+++8E77~ POP IX
|
|
0536+++8E77~ ADD IX,DE
|
|
0537+++8E77~ RET
|
|
0538+++8E77~ 0539+++8E77~ PTDECOD CALL GETIX
|
|
0540+++8E77~ PTDEC EQU $+1
|
|
0541+++8E77~ JP #C3C3
|
|
0542+++8E77~ 0543+++8E77~ ;PT2 pattern decoder
|
|
0544+++8E77~ PD2_SAM CALL SETSAM
|
|
0545+++8E77~ JR PD2_LOOP
|
|
0546+++8E77~ 0547+++8E77~ PD2_EOff LD (IX-12+CHP.Env_En),A
|
|
0548+++8E77~ JR PD2_LOOP
|
|
0549+++8E77~ 0550+++8E77~ PD2_ENV LD (IX-12+CHP.Env_En),16
|
|
0551+++8E77~ LD (IY-100+VRS.AYREGS+EnvTp),A
|
|
0552+++8E77~ LD A,(BC)
|
|
0553+++8E77~ INC BC
|
|
0554+++8E77~ LD L,A
|
|
0555+++8E77~ LD A,(BC)
|
|
0556+++8E77~ INC BC
|
|
0557+++8E77~ LD H,A
|
|
0558+++8E77~ CALL SETENBS
|
|
0559+++8E77~ JR PD2_LOOP
|
|
0560+++8E77~ 0561+++8E77~ PD2_ORN CALL SETORN
|
|
0562+++8E77~ JR PD2_LOOP
|
|
0563+++8E77~ 0564+++8E77~ PD2_SKIP INC A
|
|
0565+++8E77~ LD (IX-12+CHP.NNtSkp),A
|
|
0566+++8E77~ JR PD2_LOOP
|
|
0567+++8E77~ 0568+++8E77~ PD2_VOL RRCA
|
|
0569+++8E77~ RRCA
|
|
0570+++8E77~ RRCA
|
|
0571+++8E77~ RRCA
|
|
0572+++8E77~ LD (IX-12+CHP.Volume),A
|
|
0573+++8E77~ JR PD2_LOOP
|
|
0574+++8E77~ 0575+++8E77~ PD2_DEL CALL C_DELAY
|
|
0576+++8E77~ JR PD2_LOOP
|
|
0577+++8E77~ 0578+++8E77~ PD2_GLIS SET 2,(IX-12+CHP.Flags)
|
|
0579+++8E77~ INC A
|
|
0580+++8E77~ LD (IX-12+CHP.TnSlDl),A
|
|
0581+++8E77~ LD (IX-12+CHP.TSlCnt),A
|
|
0582+++8E77~ LD A,(BC)
|
|
0583+++8E77~ INC BC
|
|
0584+++8E77~ LD (IX-12+CHP.TSlStp),A
|
|
0585+++8E77~ ADD A,A
|
|
0586+++8E77~ SBC A,A
|
|
0587+++8E77~ LD (IX-12+CHP.TSlStp+1),A
|
|
0588+++8E77~ SCF
|
|
0589+++8E77~ JR PD2_LP2
|
|
0590+++8E77~ 0591+++8E77~ PT2PD AND A
|
|
0592+++8E77~ 0593+++8E77~ PD2_LP2 EX AF,AF'
|
|
0594+++8E77~ 0595+++8E77~ PD2_LOOP LD A,(BC)
|
|
0596+++8E77~ INC BC
|
|
0597+++8E77~ ADD A,#20
|
|
0598+++8E77~ JR Z,PD2_REL
|
|
0599+++8E77~ JR C,PD2_SAM
|
|
0600+++8E77~ ADD A,96
|
|
0601+++8E77~ JR C,PD2_NOTE
|
|
0602+++8E77~ INC A
|
|
0603+++8E77~ JR Z,PD2_EOff
|
|
0604+++8E77~ ADD A,15
|
|
0605+++8E77~ JP Z,PD_FIN
|
|
0606+++8E77~ JR C,PD2_ENV
|
|
0607+++8E77~ ADD A,#10
|
|
0608+++8E77~ JR C,PD2_ORN
|
|
0609+++8E77~ ADD A,#40
|
|
0610+++8E77~ JR C,PD2_SKIP
|
|
0611+++8E77~ ADD A,#10
|
|
0612+++8E77~ JR C,PD2_VOL
|
|
0613+++8E77~ INC A
|
|
0614+++8E77~ JR Z,PD2_DEL
|
|
0615+++8E77~ INC A
|
|
0616+++8E77~ JR Z,PD2_GLIS
|
|
0617+++8E77~ INC A
|
|
0618+++8E77~ JR Z,PD2_PORT
|
|
0619+++8E77~ INC A
|
|
0620+++8E77~ JR Z,PD2_STOP
|
|
0621+++8E77~ LD A,(BC)
|
|
0622+++8E77~ INC BC
|
|
0623+++8E77~ LD (IX-12+CHP.CrNsSl),A
|
|
0624+++8E77~ JR PD2_LOOP
|
|
0625+++8E77~ 0626+++8E77~ PD2_PORT RES 2,(IX-12+CHP.Flags)
|
|
0627+++8E77~ LD A,(BC)
|
|
0628+++8E77~ INC BC
|
|
0629+++8E77~ INC BC ;ignoring precalc delta to right sound
|
|
0630+++8E77~ INC BC
|
|
0631+++8E77~ SCF
|
|
0632+++8E77~ JR PD2_LP2
|
|
0633+++8E77~ 0634+++8E77~ PD2_STOP LD (IX-12+CHP.TSlCnt),A
|
|
0635+++8E77~ JR PD2_LOOP
|
|
0636+++8E77~ 0637+++8E77~ PD2_REL LD (IX-12+CHP.Flags),A
|
|
0638+++8E77~ JR PD2_EXIT
|
|
0639+++8E77~ 0640+++8E77~ PD2_NOTE LD L,A
|
|
0641+++8E77~ LD A,(IX-12+CHP.Note)
|
|
0642+++8E77~ LD (PrNote+1),A
|
|
0643+++8E77~ LD (IX-12+CHP.Note),L
|
|
0644+++8E77~ XOR A
|
|
0645+++8E77~ LD (IX-12+CHP.TSlCnt),A
|
|
0646+++8E77~ SET 0,(IX-12+CHP.Flags)
|
|
0647+++8E77~ EX AF,AF'
|
|
0648+++8E77~ JR NC,NOGLIS2
|
|
0649+++8E77~ BIT 2,(IX-12+CHP.Flags)
|
|
0650+++8E77~ JR NZ,NOPORT2
|
|
0651+++8E77~ LD (LoStep),A
|
|
0652+++8E77~ ADD A,A
|
|
0653+++8E77~ SBC A,A
|
|
0654+++8E77~ EX AF,AF'
|
|
0655+++8E77~ LD H,A
|
|
0656+++8E77~ LD L,A
|
|
0657+++8E77~ INC A
|
|
0658+++8E77~ CALL SETPORT
|
|
0659+++8E77~ NOPORT2 LD (IX-12+CHP.TSlCnt),1
|
|
0660+++8E77~ NOGLIS2 XOR A
|
|
0661+++8E77~ 0662+++8E77~ 0663+++8E77~ PD2_EXIT LD (IX-12+CHP.PsInSm),A
|
|
0664+++8E77~ LD (IX-12+CHP.PsInOr),A
|
|
0665+++8E77~ LD (IX-12+CHP.CrTnSl),A
|
|
0666+++8E77~ LD (IX-12+CHP.CrTnSl+1),A
|
|
0667+++8E77~ JP PD_FIN
|
|
0668+++8E77~ 0669+++8E77~ ;PT3 pattern decoder
|
|
0670+++8E77~ PD_OrSm LD (IX-12+CHP.Env_En),0
|
|
0671+++8E77~ CALL SETORN
|
|
0672+++8E77~ PD_SAM_ LD A,(BC)
|
|
0673+++8E77~ INC BC
|
|
0674+++8E77~ RRCA
|
|
0675+++8E77~ 0676+++8E77~ PD_SAM CALL SETSAM
|
|
0677+++8E77~ JR PD_LOOP
|
|
0678+++8E77~ 0679+++8E77~ PD_VOL RRCA
|
|
0680+++8E77~ RRCA
|
|
0681+++8E77~ RRCA
|
|
0682+++8E77~ RRCA
|
|
0683+++8E77~ LD (IX-12+CHP.Volume),A
|
|
0684+++8E77~ JR PD_LP2
|
|
0685+++8E77~
|
|
0686+++8E77~ PD_EOff LD (IX-12+CHP.Env_En),A
|
|
0687+++8E77~ LD (IX-12+CHP.PsInOr),A
|
|
0688+++8E77~ JR PD_LP2
|
|
0689+++8E77~ 0690+++8E77~ PD_SorE DEC A
|
|
0691+++8E77~ JR NZ,PD_ENV
|
|
0692+++8E77~ LD A,(BC)
|
|
0693+++8E77~ INC BC
|
|
0694+++8E77~ LD (IX-12+CHP.NNtSkp),A
|
|
0695+++8E77~ JR PD_LP2
|
|
0696+++8E77~ 0697+++8E77~ PD_ENV CALL SETENV
|
|
0698+++8E77~ JR PD_LP2
|
|
0699+++8E77~ 0700+++8E77~ PD_ORN CALL SETORN
|
|
0701+++8E77~ JR PD_LOOP
|
|
0702+++8E77~ 0703+++8E77~ PD_ESAM LD (IX-12+CHP.Env_En),A
|
|
0704+++8E77~ LD (IX-12+CHP.PsInOr),A
|
|
0705+++8E77~ CALL NZ,SETENV
|
|
0706+++8E77~ JR PD_SAM_
|
|
0707+++8E77~ 0708+++8E77~ PT3PD LD A,(IX-12+CHP.Note)
|
|
0709+++8E77~ LD (PrNote+1),A
|
|
0710+++8E77~ LD L,(IX-12+CHP.CrTnSl)
|
|
0711+++8E77~ LD H,(IX-12+CHP.CrTnSl+1)
|
|
0712+++8E77~ LD (PrSlide+1),HL
|
|
0713+++8E77~ 0714+++8E77~ PD_LOOP LD DE,#2010
|
|
0715+++8E77~ PD_LP2 LD A,(BC)
|
|
0716+++8E77~ INC BC
|
|
0717+++8E77~ ADD A,E
|
|
0718+++8E77~ JR C,PD_OrSm
|
|
0719+++8E77~ ADD A,D
|
|
0720+++8E77~ JR Z,PD_FIN
|
|
0721+++8E77~ JR C,PD_SAM
|
|
0722+++8E77~ ADD A,E
|
|
0723+++8E77~ JR Z,PD_REL
|
|
0724+++8E77~ JR C,PD_VOL
|
|
0725+++8E77~ ADD A,E
|
|
0726+++8E77~ JR Z,PD_EOff
|
|
0727+++8E77~ JR C,PD_SorE
|
|
0728+++8E77~ ADD A,96
|
|
0729+++8E77~ JR C,PD_NOTE
|
|
0730+++8E77~ ADD A,E
|
|
0731+++8E77~ JR C,PD_ORN
|
|
0732+++8E77~ ADD A,D
|
|
0733+++8E77~ JR C,PD_NOIS
|
|
0734+++8E77~ ADD A,E
|
|
0735+++8E77~ JR C,PD_ESAM
|
|
0736+++8E77~ ADD A,A
|
|
0737+++8E77~ LD E,A
|
|
0738+++8E77~ LD HL,(SPCCOMS+#FF20-#2000)&65535
|
|
0739+++8E77~ ADD HL,DE
|
|
0740+++8E77~ LD E,(HL)
|
|
0741+++8E77~ INC HL
|
|
0742+++8E77~ LD D,(HL)
|
|
0743+++8E77~ PUSH DE
|
|
0744+++8E77~ JR PD_LOOP
|
|
0745+++8E77~ 0746+++8E77~ PD_NOIS LD (IY-100+VRS.Ns_Base),A
|
|
0747+++8E77~ JR PD_LP2
|
|
0748+++8E77~ 0749+++8E77~ PD_REL RES 0,(IX-12+CHP.Flags)
|
|
0750+++8E77~ JR PD_RES
|
|
0751+++8E77~ 0752+++8E77~ PD_NOTE LD (IX-12+CHP.Note),A
|
|
0753+++8E77~ SET 0,(IX-12+CHP.Flags)
|
|
0754+++8E77~ XOR A
|
|
0755+++8E77~ 0756+++8E77~ PD_RES LD (PDSP_+1),SP
|
|
0757+++8E77~ LD SP,IX
|
|
0758+++8E77~ LD H,A
|
|
0759+++8E77~ LD L,A
|
|
0760+++8E77~ PUSH HL
|
|
0761+++8E77~ PUSH HL
|
|
0762+++8E77~ PUSH HL
|
|
0763+++8E77~ PUSH HL
|
|
0764+++8E77~ PUSH HL
|
|
0765+++8E77~ PUSH HL
|
|
0766+++8E77~ PDSP_ LD SP,#3131
|
|
0767+++8E77~ 0768+++8E77~ PD_FIN LD A,(IX-12+CHP.NNtSkp)
|
|
0769+++8E77~ LD (IX-12+CHP.NtSkCn),A
|
|
0770+++8E77~ RET
|
|
0771+++8E77~ 0772+++8E77~ C_PORTM LD A,(BC)
|
|
0773+++8E77~ INC BC
|
|
0774+++8E77~ ;SKIP PRECALCULATED TONE DELTA (BECAUSE
|
|
0775+++8E77~ ;CANNOT BE RIGHT AFTER PT3 COMPILATION)
|
|
0776+++8E77~ INC BC
|
|
0777+++8E77~ INC BC
|
|
0778+++8E77~ EX AF,AF'
|
|
0779+++8E77~ LD A,(BC) ;SIGNED TONE STEP
|
|
0780+++8E77~ INC BC
|
|
0781+++8E77~ LD (LoStep),A
|
|
0782+++8E77~ LD A,(BC)
|
|
0783+++8E77~ INC BC
|
|
0784+++8E77~ AND A
|
|
0785+++8E77~ EX AF,AF'
|
|
0786+++8E77~ LD L,(IX-12+CHP.CrTnSl)
|
|
0787+++8E77~ LD H,(IX-12+CHP.CrTnSl+1)
|
|
0788+++8E77~ 0789+++8E77~ ;Set portamento variables
|
|
0790+++8E77~ ;A - Delay; A' - Hi(Step); ZF' - (A'=0); HL - CrTnSl
|
|
0791+++8E77~ 0792+++8E77~ SETPORT RES 2,(IX-12+CHP.Flags)
|
|
0793+++8E77~ LD (IX-12+CHP.TnSlDl),A
|
|
0794+++8E77~ LD (IX-12+CHP.TSlCnt),A
|
|
0795+++8E77~ PUSH HL
|
|
0796+++8E77~ LD DE,NT_
|
|
0797+++8E77~ LD A,(IX-12+CHP.Note)
|
|
0798+++8E77~ LD (IX-12+CHP.SlToNt),A
|
|
0799+++8E77~ ADD A,A
|
|
0800+++8E77~ LD L,A
|
|
0801+++8E77~ LD H,0
|
|
0802+++8E77~ ADD HL,DE
|
|
0803+++8E77~ LD A,(HL)
|
|
0804+++8E77~ INC HL
|
|
0805+++8E77~ LD H,(HL)
|
|
0806+++8E77~ LD L,A
|
|
0807+++8E77~ PUSH HL
|
|
0808+++8E77~ PrNote LD A,#3E
|
|
0809+++8E77~ LD (IX-12+CHP.Note),A
|
|
0810+++8E77~ ADD A,A
|
|
0811+++8E77~ LD L,A
|
|
0812+++8E77~ LD H,0
|
|
0813+++8E77~ ADD HL,DE
|
|
0814+++8E77~ LD E,(HL)
|
|
0815+++8E77~ INC HL
|
|
0816+++8E77~ LD D,(HL)
|
|
0817+++8E77~ POP HL
|
|
0818+++8E77~ SBC HL,DE
|
|
0819+++8E77~ LD (IX-12+CHP.TnDelt),L
|
|
0820+++8E77~ LD (IX-12+CHP.TnDelt+1),H
|
|
0821+++8E77~ POP DE
|
|
0822+++8E77~ Version EQU $+1
|
|
0823+++8E77~ LD A,#3E
|
|
0824+++8E77~ CP 6
|
|
0825+++8E77~ JR C,OLDPRTM ;Old 3xxx for PT v3.5-
|
|
0826+++8E77~ PrSlide LD DE,#1111
|
|
0827+++8E77~ LD (IX-12+CHP.CrTnSl),E
|
|
0828+++8E77~ LD (IX-12+CHP.CrTnSl+1),D
|
|
0829+++8E77~ LoStep EQU $+1
|
|
0830+++8E77~ OLDPRTM LD A,#3E
|
|
0831+++8E77~ EX AF,AF'
|
|
0832+++8E77~ JR Z,NOSIG
|
|
0833+++8E77~ EX DE,HL
|
|
0834+++8E77~ NOSIG SBC HL,DE
|
|
0835+++8E77~ JP P,SET_STP
|
|
0836+++8E77~ CPL
|
|
0837+++8E77~ EX AF,AF'
|
|
0838+++8E77~ NEG
|
|
0839+++8E77~ EX AF,AF'
|
|
0840+++8E77~ SET_STP LD (IX-12+CHP.TSlStp+1),A
|
|
0841+++8E77~ EX AF,AF'
|
|
0842+++8E77~ LD (IX-12+CHP.TSlStp),A
|
|
0843+++8E77~ LD (IX-12+CHP.COnOff),0
|
|
0844+++8E77~ RET
|
|
0845+++8E77~ 0846+++8E77~ C_GLISS SET 2,(IX-12+CHP.Flags)
|
|
0847+++8E77~ LD A,(BC)
|
|
0848+++8E77~ INC BC
|
|
0849+++8E77~ LD (IX-12+CHP.TnSlDl),A
|
|
0850+++8E77~ AND A
|
|
0851+++8E77~ JR NZ,GL36
|
|
0852+++8E77~ LD A,(Version) ;AlCo PT3.7+
|
|
0853+++8E77~ CP 7
|
|
0854+++8E77~ SBC A,A
|
|
0855+++8E77~ INC A
|
|
0856+++8E77~ GL36 LD (IX-12+CHP.TSlCnt),A
|
|
0857+++8E77~ LD A,(BC)
|
|
0858+++8E77~ INC BC
|
|
0859+++8E77~ EX AF,AF'
|
|
0860+++8E77~ LD A,(BC)
|
|
0861+++8E77~ INC BC
|
|
0862+++8E77~ JR SET_STP
|
|
0863+++8E77~ 0864+++8E77~ C_SMPOS LD A,(BC)
|
|
0865+++8E77~ INC BC
|
|
0866+++8E77~ LD (IX-12+CHP.PsInSm),A
|
|
0867+++8E77~ RET
|
|
0868+++8E77~ 0869+++8E77~ C_ORPOS LD A,(BC)
|
|
0870+++8E77~ INC BC
|
|
0871+++8E77~ LD (IX-12+CHP.PsInOr),A
|
|
0872+++8E77~ RET
|
|
0873+++8E77~ 0874+++8E77~ C_VIBRT LD A,(BC)
|
|
0875+++8E77~ INC BC
|
|
0876+++8E77~ LD (IX-12+CHP.OnOffD),A
|
|
0877+++8E77~ LD (IX-12+CHP.COnOff),A
|
|
0878+++8E77~ LD A,(BC)
|
|
0879+++8E77~ INC BC
|
|
0880+++8E77~ LD (IX-12+CHP.OffOnD),A
|
|
0881+++8E77~ XOR A
|
|
0882+++8E77~ LD (IX-12+CHP.TSlCnt),A
|
|
0883+++8E77~ LD (IX-12+CHP.CrTnSl),A
|
|
0884+++8E77~ LD (IX-12+CHP.CrTnSl+1),A
|
|
0885+++8E77~ RET
|
|
0886+++8E77~ 0887+++8E77~ C_ENGLS LD A,(BC)
|
|
0888+++8E77~ INC BC
|
|
0889+++8E77~ LD (IY-100+VRS.Env_Del),A
|
|
0890+++8E77~ LD (IY-100+VRS.CurEDel),A
|
|
0891+++8E77~ LD A,(BC)
|
|
0892+++8E77~ INC BC
|
|
0893+++8E77~ LD L,A
|
|
0894+++8E77~ LD A,(BC)
|
|
0895+++8E77~ INC BC
|
|
0896+++8E77~ LD H,A
|
|
0897+++8E77~ LD (IY-100+VRS.ESldAdd),L
|
|
0898+++8E77~ LD (IY-100+VRS.ESldAdd+1),H
|
|
0899+++8E77~ RET
|
|
0900+++8E77~ 0901+++8E77~ C_DELAY LD A,(BC)
|
|
0902+++8E77~ INC BC
|
|
0903+++8E77~ LD (IY-100+VRS.Delay),A
|
|
0904+++8E77~ LD HL,VARS2+VRS.ModNum ;if AlCo_TS
|
|
0905+++8E77~ BIT 1,(HL)
|
|
0906+++8E77~ RET Z
|
|
0907+++8E77~ LD (VARS1+VRS.Delay),A
|
|
0908+++8E77~ LD (VARS1+VRS.DelyCnt),A
|
|
0909+++8E77~ LD (VARS2+VRS.Delay),A
|
|
0910+++8E77~ RET
|
|
0911+++8E77~
|
|
0912+++8E77~ SETENV LD (IX-12+CHP.Env_En),E
|
|
0913+++8E77~ LD (IY-100+VRS.AYREGS+EnvTp),A
|
|
0914+++8E77~ LD A,(BC)
|
|
0915+++8E77~ INC BC
|
|
0916+++8E77~ LD H,A
|
|
0917+++8E77~ LD A,(BC)
|
|
0918+++8E77~ INC BC
|
|
0919+++8E77~ LD L,A
|
|
0920+++8E77~ CALL SETENBS
|
|
0921+++8E77~ XOR A
|
|
0922+++8E77~ LD (IX-12+CHP.PsInOr),A
|
|
0923+++8E77~ LD (IY-100+VRS.CurEDel),A
|
|
0924+++8E77~ LD H,A
|
|
0925+++8E77~ LD L,A
|
|
0926+++8E77~ JP SETESLD
|
|
0927+++8E77~ 0928+++8E77~ SETORN ADD A,A
|
|
0929+++8E77~ LD E,A
|
|
0930+++8E77~ LD D,0
|
|
0931+++8E77~ LD (IX-12+CHP.PsInOr),D
|
|
0932+++8E77~ LD L,(IY-100+VRS.OrnPtrs)
|
|
0933+++8E77~ LD H,(IY-100+VRS.OrnPtrs+1)
|
|
0934+++8E77~ ADD HL,DE
|
|
0935+++8E77~ LD E,(HL)
|
|
0936+++8E77~ INC HL
|
|
0937+++8E77~ LD D,(HL)
|
|
0938+++8E77~ LD L,(IY-100+VRS.MODADDR)
|
|
0939+++8E77~ LD H,(IY-100+VRS.MODADDR+1)
|
|
0940+++8E77~ ADD HL,DE
|
|
0941+++8E77~ LD (IX-12+CHP.OrnPtr),L
|
|
0942+++8E77~ LD (IX-12+CHP.OrnPtr+1),H
|
|
0943+++8E77~ C_NOP RET
|
|
0944+++8E77~ 0945+++8E77~ SETSAM ADD A,A
|
|
0946+++8E77~ LD E,A
|
|
0947+++8E77~ LD D,0
|
|
0948+++8E77~ LD L,(IY-100+VRS.SamPtrs);
|
|
0949+++8E77~ LD H,(IY-100+VRS.SamPtrs+1);
|
|
0950+++8E77~ ADD HL,DE
|
|
0951+++8E77~ LD E,(HL)
|
|
0952+++8E77~ INC HL
|
|
0953+++8E77~ LD D,(HL)
|
|
0954+++8E77~ LD L,(IY-100+VRS.MODADDR)
|
|
0955+++8E77~ LD H,(IY-100+VRS.MODADDR+1)
|
|
0956+++8E77~ ADD HL,DE
|
|
0957+++8E77~ LD (IX-12+CHP.SamPtr),L
|
|
0958+++8E77~ LD (IX-12+CHP.SamPtr+1),H
|
|
0959+++8E77~ RET
|
|
0960+++8E77~ 0961+++8E77~ ;ALL 16 ADDRESSES TO PROTECT FROM BROKEN PT3 MODULES
|
|
0962+++8E77~ SPCCOMS DW C_NOP
|
|
0963+++8E77~ DW C_GLISS
|
|
0964+++8E77~ DW C_PORTM
|
|
0965+++8E77~ DW C_SMPOS
|
|
0966+++8E77~ DW C_ORPOS
|
|
0967+++8E77~ DW C_VIBRT
|
|
0968+++8E77~ DW C_NOP
|
|
0969+++8E77~ DW C_NOP
|
|
0970+++8E77~ DW C_ENGLS
|
|
0971+++8E77~ DW C_DELAY
|
|
0972+++8E77~ DW C_NOP
|
|
0973+++8E77~ DW C_NOP
|
|
0974+++8E77~ DW C_NOP
|
|
0975+++8E77~ DW C_NOP
|
|
0976+++8E77~ DW C_NOP
|
|
0977+++8E77~ DW C_NOP
|
|
0978+++8E77~ 0979+++8E77~ CHREGS CALL GETIX
|
|
0980+++8E77~ XOR A
|
|
0981+++8E77~ LD (Ampl),A
|
|
0982+++8E77~ BIT 0,(IX+CHP.Flags)
|
|
0983+++8E77~ PUSH HL
|
|
0984+++8E77~ JP Z,CH_EXIT
|
|
0985+++8E77~ LD (CSP_+1),SP
|
|
0986+++8E77~ LD L,(IX+CHP.OrnPtr)
|
|
0987+++8E77~ LD H,(IX+CHP.OrnPtr+1)
|
|
0988+++8E77~ LD SP,HL
|
|
0989+++8E77~ POP DE
|
|
0990+++8E77~ LD H,A
|
|
0991+++8E77~ LD A,(IX+CHP.PsInOr)
|
|
0992+++8E77~ LD L,A
|
|
0993+++8E77~ ADD HL,SP
|
|
0994+++8E77~ INC A
|
|
0995+++8E77~ ;PT2 PT3
|
|
0996+++8E77~ OrnCP INC A ;CP E CP D
|
|
0997+++8E77~ JR C,CH_ORPS
|
|
0998+++8E77~ OrnLD DB 1 ;LD A,D LD A,E
|
|
0999+++8E77~ CH_ORPS LD (IX+CHP.PsInOr),A
|
|
1000+++8E77~ LD A,(IX+CHP.Note)
|
|
1001+++8E77~ ADD A,(HL)
|
|
1002+++8E77~ JP P,CH_NTP
|
|
1003+++8E77~ XOR A
|
|
1004+++8E77~ CH_NTP CP 96
|
|
1005+++8E77~ JR C,CH_NOK
|
|
1006+++8E77~ LD A,95
|
|
1007+++8E77~ CH_NOK ADD A,A
|
|
1008+++8E77~ EX AF,AF'
|
|
1009+++8E77~ LD L,(IX+CHP.SamPtr)
|
|
1010+++8E77~ LD H,(IX+CHP.SamPtr+1)
|
|
1011+++8E77~ LD SP,HL
|
|
1012+++8E77~ POP DE
|
|
1013+++8E77~ LD H,0
|
|
1014+++8E77~ LD A,(IX+CHP.PsInSm)
|
|
1015+++8E77~ LD B,A
|
|
1016+++8E77~ ADD A,A
|
|
1017+++8E77~ SamClc2 ADD A,A ;or ADD A,B for PT2
|
|
1018+++8E77~ LD L,A
|
|
1019+++8E77~ ADD HL,SP
|
|
1020+++8E77~ LD SP,HL
|
|
1021+++8E77~ LD A,B
|
|
1022+++8E77~ INC A
|
|
1023+++8E77~ ;PT2 PT3
|
|
1024+++8E77~ SamCP INC A ;CP E CP D
|
|
1025+++8E77~ JR C,CH_SMPS
|
|
1026+++8E77~ SamLD DB 1 ;LD A,D LD A,E
|
|
1027+++8E77~ CH_SMPS LD (IX+CHP.PsInSm),A
|
|
1028+++8E77~ POP BC
|
|
1029+++8E77~ POP HL
|
|
1030+++8E77~ 1031+++8E77~ ;Convert PT2 sample to PT3
|
|
1032+++8E77~ ;PT2 PT3
|
|
1033+++8E77~ SamCnv POP HL ;BIT 2,C JR e_
|
|
1034+++8E77~ POP HL
|
|
1035+++8E77~ LD H,B
|
|
1036+++8E77~ JR NZ,$+8
|
|
1037+++8E77~ EX DE,HL
|
|
1038+++8E77~ AND A
|
|
1039+++8E77~ SBC HL,HL
|
|
1040+++8E77~ SBC HL,DE
|
|
1041+++8E77~ LD D,C
|
|
1042+++8E77~ RR C
|
|
1043+++8E77~ SBC A,A
|
|
1044+++8E77~ CPL
|
|
1045+++8E77~ AND #3E
|
|
1046+++8E77~ RR C
|
|
1047+++8E77~ RR B
|
|
1048+++8E77~ AND C
|
|
1049+++8E77~ LD C,A
|
|
1050+++8E77~ LD A,B
|
|
1051+++8E77~ RRA
|
|
1052+++8E77~ RRA
|
|
1053+++8E77~ RR D
|
|
1054+++8E77~ RRA
|
|
1055+++8E77~ AND #9F
|
|
1056+++8E77~ LD B,A
|
|
1057+++8E77~ 1058+++8E77~ e_ LD E,(IX+CHP.TnAcc)
|
|
1059+++8E77~ LD D,(IX+CHP.TnAcc+1)
|
|
1060+++8E77~ ADD HL,DE
|
|
1061+++8E77~ BIT 6,B
|
|
1062+++8E77~ JR Z,CH_NOAC
|
|
1063+++8E77~ LD (IX+CHP.TnAcc),L
|
|
1064+++8E77~ LD (IX+CHP.TnAcc+1),H
|
|
1065+++8E77~ CH_NOAC EX DE,HL
|
|
1066+++8E77~ EX AF,AF'
|
|
1067+++8E77~ ADD A,NT_&255
|
|
1068+++8E77~ LD L,A
|
|
1069+++8E77~ ADC A,NT_/256
|
|
1070+++8E77~ SUB L
|
|
1071+++8E77~ LD H,A
|
|
1072+++8E77~ LD SP,HL
|
|
1073+++8E77~ POP HL
|
|
1074+++8E77~ ADD HL,DE
|
|
1075+++8E77~ LD E,(IX+CHP.CrTnSl)
|
|
1076+++8E77~ LD D,(IX+CHP.CrTnSl+1)
|
|
1077+++8E77~ ADD HL,DE
|
|
1078+++8E77~ CSP_ LD SP,#3131
|
|
1079+++8E77~ EX (SP),HL
|
|
1080+++8E77~ XOR A
|
|
1081+++8E77~ OR (IX+CHP.TSlCnt)
|
|
1082+++8E77~ JR Z,CH_AMP
|
|
1083+++8E77~ DEC (IX+CHP.TSlCnt)
|
|
1084+++8E77~ JR NZ,CH_AMP
|
|
1085+++8E77~ LD A,(IX+CHP.TnSlDl)
|
|
1086+++8E77~ LD (IX+CHP.TSlCnt),A
|
|
1087+++8E77~ LD L,(IX+CHP.TSlStp)
|
|
1088+++8E77~ LD H,(IX+CHP.TSlStp+1)
|
|
1089+++8E77~ LD A,H
|
|
1090+++8E77~ ADD HL,DE
|
|
1091+++8E77~ LD (IX+CHP.CrTnSl),L
|
|
1092+++8E77~ LD (IX+CHP.CrTnSl+1),H
|
|
1093+++8E77~ BIT 2,(IX+CHP.Flags)
|
|
1094+++8E77~ JR NZ,CH_AMP
|
|
1095+++8E77~ LD E,(IX+CHP.TnDelt)
|
|
1096+++8E77~ LD D,(IX+CHP.TnDelt+1)
|
|
1097+++8E77~ AND A
|
|
1098+++8E77~ JR Z,CH_STPP
|
|
1099+++8E77~ EX DE,HL
|
|
1100+++8E77~ CH_STPP SBC HL,DE
|
|
1101+++8E77~ JP M,CH_AMP
|
|
1102+++8E77~ LD A,(IX+CHP.SlToNt)
|
|
1103+++8E77~ LD (IX+CHP.Note),A
|
|
1104+++8E77~ XOR A
|
|
1105+++8E77~ LD (IX+CHP.TSlCnt),A
|
|
1106+++8E77~ LD (IX+CHP.CrTnSl),A
|
|
1107+++8E77~ LD (IX+CHP.CrTnSl+1),A
|
|
1108+++8E77~ CH_AMP LD A,(IX+CHP.CrAmSl)
|
|
1109+++8E77~ BIT 7,C
|
|
1110+++8E77~ JR Z,CH_NOAM
|
|
1111+++8E77~ BIT 6,C
|
|
1112+++8E77~ JR Z,CH_AMIN
|
|
1113+++8E77~ CP 15
|
|
1114+++8E77~ JR Z,CH_NOAM
|
|
1115+++8E77~ INC A
|
|
1116+++8E77~ JR CH_SVAM
|
|
1117+++8E77~ CH_AMIN CP -15
|
|
1118+++8E77~ JR Z,CH_NOAM
|
|
1119+++8E77~ DEC A
|
|
1120+++8E77~ CH_SVAM LD (IX+CHP.CrAmSl),A
|
|
1121+++8E77~ CH_NOAM LD L,A
|
|
1122+++8E77~ LD A,B
|
|
1123+++8E77~ AND 15
|
|
1124+++8E77~ ADD A,L
|
|
1125+++8E77~ JP P,CH_APOS
|
|
1126+++8E77~ XOR A
|
|
1127+++8E77~ CH_APOS CP 16
|
|
1128+++8E77~ JR C,CH_VOL
|
|
1129+++8E77~ LD A,15
|
|
1130+++8E77~ CH_VOL OR (IX+CHP.Volume)
|
|
1131+++8E77~ ADD A,VT_&255
|
|
1132+++8E77~ LD L,A
|
|
1133+++8E77~ ADC A,VT_/256
|
|
1134+++8E77~ SUB L
|
|
1135+++8E77~ LD H,A
|
|
1136+++8E77~ LD A,(HL)
|
|
1137+++8E77~ CH_ENV BIT 0,C
|
|
1138+++8E77~ JR NZ,CH_NOEN
|
|
1139+++8E77~ OR (IX+CHP.Env_En)
|
|
1140+++8E77~ CH_NOEN LD (Ampl),A
|
|
1141+++8E77~ BIT 7,B
|
|
1142+++8E77~ LD A,C
|
|
1143+++8E77~ JR Z,NO_ENSL
|
|
1144+++8E77~ RLA
|
|
1145+++8E77~ RLA
|
|
1146+++8E77~ SRA A
|
|
1147+++8E77~ SRA A
|
|
1148+++8E77~ SRA A
|
|
1149+++8E77~ ADD A,(IX+CHP.CrEnSl) ;SEE COMMENT BELOW
|
|
1150+++8E77~ BIT 5,B
|
|
1151+++8E77~ JR Z,NO_ENAC
|
|
1152+++8E77~ LD (IX+CHP.CrEnSl),A
|
|
1153+++8E77~ NO_ENAC ADD A,(IY-100+VRS.AddToEn) ;BUG IN PT3 - NEED WORD HERE
|
|
1154+++8E77~ LD (IY-100+VRS.AddToEn),A
|
|
1155+++8E77~ JR CH_MIX
|
|
1156+++8E77~ NO_ENSL RRA
|
|
1157+++8E77~ ADD A,(IX+CHP.CrNsSl)
|
|
1158+++8E77~ LD (IY-100+VRS.AddToNs),A
|
|
1159+++8E77~ BIT 5,B
|
|
1160+++8E77~ JR Z,CH_MIX
|
|
1161+++8E77~ LD (IX+CHP.CrNsSl),A
|
|
1162+++8E77~ CH_MIX LD A,B
|
|
1163+++8E77~ RRA
|
|
1164+++8E77~ AND #48
|
|
1165+++8E77~ CH_EXIT OR (IY-100+VRS.AYREGS+Mixer)
|
|
1166+++8E77~ RRCA
|
|
1167+++8E77~ LD (IY-100+VRS.AYREGS+Mixer),A
|
|
1168+++8E77~ POP HL
|
|
1169+++8E77~ XOR A
|
|
1170+++8E77~ OR (IX+CHP.COnOff)
|
|
1171+++8E77~ RET Z
|
|
1172+++8E77~ DEC (IX+CHP.COnOff)
|
|
1173+++8E77~ RET NZ
|
|
1174+++8E77~ XOR (IX+CHP.Flags)
|
|
1175+++8E77~ LD (IX+CHP.Flags),A
|
|
1176+++8E77~ RRA
|
|
1177+++8E77~ LD A,(IX+CHP.OnOffD)
|
|
1178+++8E77~ JR C,CH_ONDL
|
|
1179+++8E77~ LD A,(IX+CHP.OffOnD)
|
|
1180+++8E77~ CH_ONDL LD (IX+CHP.COnOff),A
|
|
1181+++8E77~ RET
|
|
1182+++8E77~ 1183+++8E77~ PLAY_ XOR A
|
|
1184+++8E77~ LD (IY-100+VRS.AddToEn),A
|
|
1185+++8E77~ LD (IY-100+VRS.AYREGS+Mixer),A
|
|
1186+++8E77~ DEC A
|
|
1187+++8E77~ LD (IY-100+VRS.AYREGS+EnvTp),A
|
|
1188+++8E77~ DEC (IY-100+VRS.DelyCnt)
|
|
1189+++8E77~ JP NZ,PL2
|
|
1190+++8E77~ DEC (IY-100+VRS.ChanA+CHP.NtSkCn)
|
|
1191+++8E77~ JR NZ,PL1B
|
|
1192+++8E77~ LD C,(IY-100+VRS.AdInPtA)
|
|
1193+++8E77~ LD B,(IY-100+VRS.AdInPtA+1)
|
|
1194+++8E77~ LD A,(BC)
|
|
1195+++8E77~ AND A
|
|
1196+++8E77~ JR NZ,PL1A
|
|
1197+++8E77~ LD D,A
|
|
1198+++8E77~ LD (IY-100+VRS.Ns_Base),A
|
|
1199+++8E77~ LD L,(IY-100+VRS.CrPsPtr)
|
|
1200+++8E77~ LD H,(IY-100+VRS.CrPsPtr+1)
|
|
1201+++8E77~ INC HL
|
|
1202+++8E77~ LD A,(HL)
|
|
1203+++8E77~ INC A
|
|
1204+++8E77~ JR NZ,PLNLP
|
|
1205+++8E77~ 1206+++8E77~ IF LoopChecker
|
|
1207+++8E77~ CALL CHECKLP
|
|
1208+++8E77~ ENDIF
|
|
1209+++8E77~ 1210+++8E77~ LD L,(IY-100+VRS.LPosPtr)
|
|
1211+++8E77~ LD H,(IY-100+VRS.LPosPtr+1)
|
|
1212+++8E77~ LD A,(HL)
|
|
1213+++8E77~ INC A
|
|
1214+++8E77~ PLNLP CALL SETCPPT
|
|
1215+++8E77~ DEC A
|
|
1216+++8E77~ BIT 1,(IY-100+VRS.ModNum)
|
|
1217+++8E77~ JR Z,NoAlCo
|
|
1218+++8E77~ TSSub EQU $+1
|
|
1219+++8E77~ SUB #D6
|
|
1220+++8E77~ CPL
|
|
1221+++8E77~ NoAlCo
|
|
1222+++8E77~ ;PT2 PT3
|
|
1223+++8E77~ PsCalc DEC A ;ADD A,A NOP
|
|
1224+++8E77~ DEC A ;ADD A,(HL) NOP
|
|
1225+++8E77~ ADD A,A
|
|
1226+++8E77~ LD E,A
|
|
1227+++8E77~ RL D
|
|
1228+++8E77~ 1229+++8E77~ IF CurPosCounter
|
|
1230+++8E77~ LD A,L
|
|
1231+++8E77~ SUB (IY-100+VRS.PosSub)
|
|
1232+++8E77~ LD (IY-100+VRS.CurPos),A
|
|
1233+++8E77~ ENDIF
|
|
1234+++8E77~ 1235+++8E77~ LD L,(IY-100+VRS.PatsPtr)
|
|
1236+++8E77~ LD H,(IY-100+VRS.PatsPtr+1)
|
|
1237+++8E77~ ADD HL,DE
|
|
1238+++8E77~ LD E,(IY-100+VRS.MODADDR)
|
|
1239+++8E77~ LD D,(IY-100+VRS.MODADDR+1)
|
|
1240+++8E77~ LD (PSP_+1),SP
|
|
1241+++8E77~ LD SP,HL
|
|
1242+++8E77~ POP HL
|
|
1243+++8E77~ ADD HL,DE
|
|
1244+++8E77~ LD B,H
|
|
1245+++8E77~ LD C,L
|
|
1246+++8E77~ POP HL
|
|
1247+++8E77~ ADD HL,DE
|
|
1248+++8E77~ LD (IY-100+VRS.AdInPtB),L
|
|
1249+++8E77~ LD (IY-100+VRS.AdInPtB+1),H
|
|
1250+++8E77~ POP HL
|
|
1251+++8E77~ ADD HL,DE
|
|
1252+++8E77~ LD (IY-100+VRS.AdInPtC),L
|
|
1253+++8E77~ LD (IY-100+VRS.AdInPtC+1),H
|
|
1254+++8E77~ PSP_ LD SP,#3131
|
|
1255+++8E77~ PL1A LD DE,VRS.ChanA+12-100
|
|
1256+++8E77~ CALL PTDECOD
|
|
1257+++8E77~ LD (IY-100+VRS.AdInPtA),C
|
|
1258+++8E77~ LD (IY-100+VRS.AdInPtA+1),B
|
|
1259+++8E77~ 1260+++8E77~ PL1B DEC (IY-100+VRS.ChanB+CHP.NtSkCn)
|
|
1261+++8E77~ JR NZ,PL1C
|
|
1262+++8E77~ LD DE,VRS.ChanB+12-100
|
|
1263+++8E77~ LD C,(IY-100+VRS.AdInPtB)
|
|
1264+++8E77~ LD B,(IY-100+VRS.AdInPtB+1)
|
|
1265+++8E77~ CALL PTDECOD
|
|
1266+++8E77~ LD (IY-100+VRS.AdInPtB),C
|
|
1267+++8E77~ LD (IY-100+VRS.AdInPtB+1),B
|
|
1268+++8E77~ 1269+++8E77~ PL1C DEC (IY-100+VRS.ChanC+CHP.NtSkCn)
|
|
1270+++8E77~ JR NZ,PL1D
|
|
1271+++8E77~ LD DE,VRS.ChanC+12-100
|
|
1272+++8E77~ LD C,(IY-100+VRS.AdInPtC)
|
|
1273+++8E77~ LD B,(IY-100+VRS.AdInPtC+1)
|
|
1274+++8E77~ CALL PTDECOD
|
|
1275+++8E77~ LD (IY-100+VRS.AdInPtC),C
|
|
1276+++8E77~ LD (IY-100+VRS.AdInPtC+1),B
|
|
1277+++8E77~ 1278+++8E77~ PL1D LD A,(IY-100+VRS.Delay)
|
|
1279+++8E77~ LD (IY-100+VRS.DelyCnt),A
|
|
1280+++8E77~ 1281+++8E77~ PL2 LD DE,VRS.ChanA-100
|
|
1282+++8E77~ LD L,(IY-100+VRS.AYREGS+TonA)
|
|
1283+++8E77~ LD H,(IY-100+VRS.AYREGS+TonA+1)
|
|
1284+++8E77~ CALL CHREGS
|
|
1285+++8E77~ LD (IY-100+VRS.AYREGS+TonA),L
|
|
1286+++8E77~ LD (IY-100+VRS.AYREGS+TonA+1),H
|
|
1287+++8E77~ Ampl EQU $+1
|
|
1288+++8E77~ LD A,#3E
|
|
1289+++8E77~ LD (IY-100+VRS.AYREGS+AmplA),A
|
|
1290+++8E77~ LD DE,VRS.ChanB-100
|
|
1291+++8E77~ LD L,(IY-100+VRS.AYREGS+TonB)
|
|
1292+++8E77~ LD H,(IY-100+VRS.AYREGS+TonB+1)
|
|
1293+++8E77~ CALL CHREGS
|
|
1294+++8E77~ LD (IY-100+VRS.AYREGS+TonB),L
|
|
1295+++8E77~ LD (IY-100+VRS.AYREGS+TonB+1),H
|
|
1296+++8E77~ LD A,(Ampl)
|
|
1297+++8E77~ LD (IY-100+VRS.AYREGS+AmplB),A
|
|
1298+++8E77~ LD DE,VRS.ChanC-100
|
|
1299+++8E77~ LD L,(IY-100+VRS.AYREGS+TonC)
|
|
1300+++8E77~ LD H,(IY-100+VRS.AYREGS+TonC+1)
|
|
1301+++8E77~ CALL CHREGS
|
|
1302+++8E77~ LD (IY-100+VRS.AYREGS+TonC),L
|
|
1303+++8E77~ LD (IY-100+VRS.AYREGS+TonC+1),H
|
|
1304+++8E77~ LD A,(Ampl)
|
|
1305+++8E77~ LD (IY-100+VRS.AYREGS+AmplC),A
|
|
1306+++8E77~ 1307+++8E77~ LD A,(IY-100+VRS.Ns_Base)
|
|
1308+++8E77~ ADD (IY-100+VRS.AddToNs)
|
|
1309+++8E77~ LD (IY-100+VRS.AYREGS+Noise),A
|
|
1310+++8E77~ 1311+++8E77~ LD A,(IY-100+VRS.AddToEn)
|
|
1312+++8E77~ LD E,A
|
|
1313+++8E77~ ADD A,A
|
|
1314+++8E77~ SBC A,A
|
|
1315+++8E77~ LD D,A
|
|
1316+++8E77~ LD L,(IY-100+VRS.EnvBase)
|
|
1317+++8E77~ LD H,(IY-100+VRS.EnvBase+1)
|
|
1318+++8E77~ ADD HL,DE
|
|
1319+++8E77~ LD E,(IY-100+VRS.CurESld)
|
|
1320+++8E77~ LD D,(IY-100+VRS.CurESld+1)
|
|
1321+++8E77~ ADD HL,DE
|
|
1322+++8E77~ LD (IY-100+VRS.AYREGS+Env),L
|
|
1323+++8E77~ LD (IY-100+VRS.AYREGS+Env+1),H
|
|
1324+++8E77~ 1325+++8E77~ XOR A
|
|
1326+++8E77~ OR (IY-100+VRS.CurEDel)
|
|
1327+++8E77~ RET Z
|
|
1328+++8E77~ DEC (IY-100+VRS.CurEDel)
|
|
1329+++8E77~ RET NZ
|
|
1330+++8E77~ LD A,(IY-100+VRS.Env_Del)
|
|
1331+++8E77~ LD (IY-100+VRS.CurEDel),A
|
|
1332+++8E77~ LD L,(IY-100+VRS.ESldAdd)
|
|
1333+++8E77~ LD H,(IY-100+VRS.ESldAdd+1)
|
|
1334+++8E77~ ADD HL,DE
|
|
1335+++8E77~ JP SETESLD
|
|
1336+++8E77~ 1337+++8E77~ PLAY LD IY,VARS1+100
|
|
1338+++8E77~ CALL PLAY_
|
|
1339+++8E77~ LD A,(is_ts)
|
|
1340+++8E77~ AND A
|
|
1341+++8E77~ JR Z,PL_nts
|
|
1342+++8E77~ LD IY,VARS2+100
|
|
1343+++8E77~ CALL PLAY_
|
|
1344+++8E77~ PL_nts
|
|
1345+++8E77~ IF Basic
|
|
1346+++8E77~ LD IY,#5C3A
|
|
1347+++8E77~ ENDIF
|
|
1348+++8E77~ 1349+++8E77~ ROUT LD BC,#FFFD
|
|
1350+++8E77~ LD A,(is_ts)
|
|
1351+++8E77~ AND A
|
|
1352+++8E77~ IFDEF ONtfm
|
|
1353+++8E77~ LD L,#F9
|
|
1354+++8E77~ OUT (C),L
|
|
1355+++8E77~ ELSE
|
|
1356+++8E77~ JR Z,r_nts ;keep old standard
|
|
1357+++8E77~ OUT (C),B
|
|
1358+++8E77~ ENDIF
|
|
1359+++8E77~ r_nts EX AF,AF'
|
|
1360+++8E77~ 1361+++8E77~ IF ACBBAC
|
|
1362+++8E77~ LD IX,VARS1+VRS.AYREGS
|
|
1363+++8E77~ ELSE
|
|
1364+++8E77~ LD HL,VARS1+VRS.AYREGS
|
|
1365+++8E77~ ENDIF
|
|
1366+++8E77~ 1367+++8E77~ CALL ROUT_
|
|
1368+++8E77~ EX AF,AF'
|
|
1369+++8E77~ RET Z
|
|
1370+++8E77~ LD B,D
|
|
1371+++8E77~ 1372+++8E77~ IFDEF ONtfm
|
|
1373+++8E77~ LD A,#F8
|
|
1374+++8E77~ ELSE
|
|
1375+++8E77~ CPL
|
|
1376+++8E77~ ENDIF
|
|
1377+++8E77~ OUT (C),A
|
|
1378+++8E77~ 1379+++8E77~ IF ACBBAC
|
|
1380+++8E77~ LD IX,VARS2+VRS.AYREGS
|
|
1381+++8E77~ ELSE
|
|
1382+++8E77~ LD HL,VARS2+VRS.AYREGS
|
|
1383+++8E77~ ENDIF
|
|
1384+++8E77~ 1385+++8E77~ ROUT_
|
|
1386+++8E77~ IF ACBBAC
|
|
1387+++8E77~ LD A,(SETUP)
|
|
1388+++8E77~ AND 12
|
|
1389+++8E77~ JR Z,ABC
|
|
1390+++8E77~ ADD A,CHTABLE
|
|
1391+++8E77~ LD E,A
|
|
1392+++8E77~ ADC A,CHTABLE/256
|
|
1393+++8E77~ SUB E
|
|
1394+++8E77~ LD D,A
|
|
1395+++8E77~ LD B,0
|
|
1396+++8E77~ PUSH IX
|
|
1397+++8E77~ POP HL
|
|
1398+++8E77~ LD A,(DE)
|
|
1399+++8E77~ INC DE
|
|
1400+++8E77~ LD C,A
|
|
1401+++8E77~ ADD HL,BC
|
|
1402+++8E77~ LD A,(IX+TonB)
|
|
1403+++8E77~ LD C,(HL)
|
|
1404+++8E77~ LD (IX+TonB),C
|
|
1405+++8E77~ LD (HL),A
|
|
1406+++8E77~ INC HL
|
|
1407+++8E77~ LD A,(IX+TonB+1)
|
|
1408+++8E77~ LD C,(HL)
|
|
1409+++8E77~ LD (IX+TonB+1),C
|
|
1410+++8E77~ LD (HL),A
|
|
1411+++8E77~ LD A,(DE)
|
|
1412+++8E77~ INC DE
|
|
1413+++8E77~ LD C,A
|
|
1414+++8E77~ ADD HL,BC
|
|
1415+++8E77~ LD A,(IX+AmplB)
|
|
1416+++8E77~ LD C,(HL)
|
|
1417+++8E77~ LD (IX+AmplB),C
|
|
1418+++8E77~ LD (HL),A
|
|
1419+++8E77~ LD A,(DE)
|
|
1420+++8E77~ INC DE
|
|
1421+++8E77~ LD (RxCA1),A
|
|
1422+++8E77~ XOR 8
|
|
1423+++8E77~ LD (RxCA2),A
|
|
1424+++8E77~ LD A,(DE)
|
|
1425+++8E77~ AND (IX+Mixer)
|
|
1426+++8E77~ LD E,A
|
|
1427+++8E77~ LD A,(IX+Mixer)
|
|
1428+++8E77~ RxCA1 DB #E6
|
|
1429+++8E77~ AND %010010
|
|
1430+++8E77~ OR E
|
|
1431+++8E77~ LD E,A
|
|
1432+++8E77~ LD A,(IX+Mixer)
|
|
1433+++8E77~ AND %010010
|
|
1434+++8E77~ RxCA2 OR E
|
|
1435+++8E77~ OR E
|
|
1436+++8E77~ LD (IX+Mixer),A
|
|
1437+++8E77~ ABC
|
|
1438+++8E77~ ENDIF
|
|
1439+++8E77~ 1440+++8E77~ XOR A
|
|
1441+++8E77~ LD DE,#FFBF
|
|
1442+++8E77~ 1443+++8E77~ IF ACBBAC
|
|
1444+++8E77~ LD BC,#FFFD
|
|
1445+++8E77~ PUSH IX
|
|
1446+++8E77~ POP HL
|
|
1447+++8E77~ ENDIF
|
|
1448+++8E77~ 1449+++8E77~ LOUT
|
|
1450+++8E77~ IFDEF ONtfm
|
|
1451+++8E77~ INF
|
|
1452+++8E77~ JP M,$-2
|
|
1453+++8E77~ ENDIF
|
|
1454+++8E77~ OUT (C),A
|
|
1455+++8E77~ IFDEF ONtfm
|
|
1456+++8E77~ INF
|
|
1457+++8E77~ JP M,$-2
|
|
1458+++8E77~ ENDIF
|
|
1459+++8E77~ LD B,E
|
|
1460+++8E77~ OUTI
|
|
1461+++8E77~ LD B,D
|
|
1462+++8E77~ INC A
|
|
1463+++8E77~ CP 13
|
|
1464+++8E77~ JR NZ,LOUT
|
|
1465+++8E77~ IFDEF ONtfm
|
|
1466+++8E77~ INF
|
|
1467+++8E77~ JP M,$-2
|
|
1468+++8E77~ ENDIF
|
|
1469+++8E77~ OUT (C),A
|
|
1470+++8E77~ LD A,(HL)
|
|
1471+++8E77~ AND A
|
|
1472+++8E77~ RET M
|
|
1473+++8E77~ IFDEF ONtfm
|
|
1474+++8E77~ INF
|
|
1475+++8E77~ JP M,$-2
|
|
1476+++8E77~ ENDIF
|
|
1477+++8E77~ LD B,E
|
|
1478+++8E77~ OUT (C),A
|
|
1479+++8E77~ RET
|
|
1480+++8E77~ 1481+++8E77~ IF ACBBAC
|
|
1482+++8E77~ CHTABLE EQU $-4
|
|
1483+++8E77~ DB 4,5,15,%001001,0,7,7,%100100
|
|
1484+++8E77~ ENDIF
|
|
1485+++8E77~ 1486+++8E77~ NT_DATA DB (T_NEW_0-T1_)*2
|
|
1487+++8E77~ DB TCNEW_0-T_
|
|
1488+++8E77~ DB (T_OLD_0-T1_)*2+1
|
|
1489+++8E77~ DB TCOLD_0-T_
|
|
1490+++8E77~ DB (T_NEW_1-T1_)*2+1
|
|
1491+++8E77~ DB TCNEW_1-T_
|
|
1492+++8E77~ DB (T_OLD_1-T1_)*2+1
|
|
1493+++8E77~ DB TCOLD_1-T_
|
|
1494+++8E77~ DB (T_NEW_2-T1_)*2
|
|
1495+++8E77~ DB TCNEW_2-T_
|
|
1496+++8E77~ DB (T_OLD_2-T1_)*2
|
|
1497+++8E77~ DB TCOLD_2-T_
|
|
1498+++8E77~ DB (T_NEW_3-T1_)*2
|
|
1499+++8E77~ DB TCNEW_3-T_
|
|
1500+++8E77~ DB (T_OLD_3-T1_)*2
|
|
1501+++8E77~ DB TCOLD_3-T_
|
|
1502+++8E77~ 1503+++8E77~ T_
|
|
1504+++8E77~ 1505+++8E77~ TCOLD_0 DB #00+1,#04+1,#08+1,#0A+1,#0C+1,#0E+1,#12+1,#14+1
|
|
1506+++8E77~ DB #18+1,#24+1,#3C+1,0
|
|
1507+++8E77~ TCOLD_1 DB #5C+1,0
|
|
1508+++8E77~ TCOLD_2 DB #30+1,#36+1,#4C+1,#52+1,#5E+1,#70+1,#82,#8C,#9C
|
|
1509+++8E77~ DB #9E,#A0,#A6,#A8,#AA,#AC,#AE,#AE,0
|
|
1510+++8E77~ TCNEW_3 DB #56+1
|
|
1511+++8E77~ TCOLD_3 DB #1E+1,#22+1,#24+1,#28+1,#2C+1,#2E+1,#32+1,#BE+1,0
|
|
1512+++8E77~ TCNEW_0 DB #1C+1,#20+1,#22+1,#26+1,#2A+1,#2C+1,#30+1,#54+1
|
|
1513+++8E77~ DB #BC+1,#BE+1,0
|
|
1514+++8E77~ TCNEW_1 EQU TCOLD_1
|
|
1515+++8E77~ TCNEW_2 DB #1A+1,#20+1,#24+1,#28+1,#2A+1,#3A+1,#4C+1,#5E+1
|
|
1516+++8E77~ DB #BA+1,#BC+1,#BE+1,0
|
|
1517+++8E77~ 1518+++8E77~ PT3EMPTYORN EQU $-1
|
|
1519+++8E77~ DB 1,0
|
|
1520+++8E77~ 1521+++8E77~ ;first 12 values of tone tables (packed)
|
|
1522+++8E77~ 1523+++8E77~ T_PACK DB #06EC*2/256,#06EC*2&255
|
|
1524+++8E77~ DB #0755-#06EC
|
|
1525+++8E77~ DB #07C5-#0755
|
|
1526+++8E77~ DB #083B-#07C5
|
|
1527+++8E77~ DB #08B8-#083B
|
|
1528+++8E77~ DB #093D-#08B8
|
|
1529+++8E77~ DB #09CA-#093D
|
|
1530+++8E77~ DB #0A5F-#09CA
|
|
1531+++8E77~ DB #0AFC-#0A5F
|
|
1532+++8E77~ DB #0BA4-#0AFC
|
|
1533+++8E77~ DB #0C55-#0BA4
|
|
1534+++8E77~ DB #0D10-#0C55
|
|
1535+++8E77~ DB #066D*2/256,#066D*2&255
|
|
1536+++8E77~ DB #06CF-#066D
|
|
1537+++8E77~ DB #0737-#06CF
|
|
1538+++8E77~ DB #07A4-#0737
|
|
1539+++8E77~ DB #0819-#07A4
|
|
1540+++8E77~ DB #0894-#0819
|
|
1541+++8E77~ DB #0917-#0894
|
|
1542+++8E77~ DB #09A1-#0917
|
|
1543+++8E77~ DB #0A33-#09A1
|
|
1544+++8E77~ DB #0ACF-#0A33
|
|
1545+++8E77~ DB #0B73-#0ACF
|
|
1546+++8E77~ DB #0C22-#0B73
|
|
1547+++8E77~ DB #0CDA-#0C22
|
|
1548+++8E77~ DB #0704*2/256,#0704*2&255
|
|
1549+++8E77~ DB #076E-#0704
|
|
1550+++8E77~ DB #07E0-#076E
|
|
1551+++8E77~ DB #0858-#07E0
|
|
1552+++8E77~ DB #08D6-#0858
|
|
1553+++8E77~ DB #095C-#08D6
|
|
1554+++8E77~ DB #09EC-#095C
|
|
1555+++8E77~ DB #0A82-#09EC
|
|
1556+++8E77~ DB #0B22-#0A82
|
|
1557+++8E77~ DB #0BCC-#0B22
|
|
1558+++8E77~ DB #0C80-#0BCC
|
|
1559+++8E77~ DB #0D3E-#0C80
|
|
1560+++8E77~ DB #07E0*2/256,#07E0*2&255
|
|
1561+++8E77~ DB #0858-#07E0
|
|
1562+++8E77~ DB #08E0-#0858
|
|
1563+++8E77~ DB #0960-#08E0
|
|
1564+++8E77~ DB #09F0-#0960
|
|
1565+++8E77~ DB #0A88-#09F0
|
|
1566+++8E77~ DB #0B28-#0A88
|
|
1567+++8E77~ DB #0BD8-#0B28
|
|
1568+++8E77~ DB #0C80-#0BD8
|
|
1569+++8E77~ DB #0D60-#0C80
|
|
1570+++8E77~ DB #0E10-#0D60
|
|
1571+++8E77~ DB #0EF8-#0E10
|
|
1572+++8E77~ 1573+++8E77~ ;vars from here can be stripped
|
|
1574+++8E77~ ;you can move VARS to any other address
|
|
1575+++8E77~ 1576+++8E77~ VARS
|
|
1577+++8E77~ 1578+++8E77~ is_ts DB 0
|
|
1579+++8E77~ 1580+++8E77~ ;ChannelsVars
|
|
1581+++8E77~ STRUCT CHP
|
|
1582+++8E77~ ;reset group
|
|
1583+++8E77~ PsInOr DB 0
|
|
1584+++8E77~ PsInSm DB 0
|
|
1585+++8E77~ CrAmSl DB 0
|
|
1586+++8E77~ CrNsSl DB 0
|
|
1587+++8E77~ CrEnSl DB 0
|
|
1588+++8E77~ TSlCnt DB 0
|
|
1589+++8E77~ CrTnSl DW 0
|
|
1590+++8E77~ TnAcc DW 0
|
|
1591+++8E77~ COnOff DB 0
|
|
1592+++8E77~ ;reset group
|
|
1593+++8E77~ 1594+++8E77~ OnOffD DB 0
|
|
1595+++8E77~ 1596+++8E77~ ;IX for PTDECOD here (+12)
|
|
1597+++8E77~ OffOnD DB 0
|
|
1598+++8E77~ OrnPtr DW 0
|
|
1599+++8E77~ SamPtr DW 0
|
|
1600+++8E77~ NNtSkp DB 0
|
|
1601+++8E77~ Note DB 0
|
|
1602+++8E77~ SlToNt DB 0
|
|
1603+++8E77~ Env_En DB 0
|
|
1604+++8E77~ Flags DB 0
|
|
1605+++8E77~ ;Enabled - 0, SimpleGliss - 2
|
|
1606+++8E77~ TnSlDl DB 0
|
|
1607+++8E77~ TSlStp DW 0
|
|
1608+++8E77~ TnDelt DW 0
|
|
1609+++8E77~ NtSkCn DB 0
|
|
1610+++8E77~ Volume DB 0
|
|
1611+++8E77~ ENDS
|
|
1612+++8E77~ 1613+++8E77~ STRUCT VRS
|
|
1614+++8E77~ 1615+++8E77~ ;IF not works in STRUCT in SjASM :(
|
|
1616+++8E77~ ; IF CurPosCounter
|
|
1617+++8E77~ CurPos DB 0
|
|
1618+++8E77~ PosSub DB 0
|
|
1619+++8E77~ ; ENDIF
|
|
1620+++8E77~ 1621+++8E77~ ModNum DB 0 ;bit0: ChipNum
|
|
1622+++8E77~ ;bit1: 1-reversed patterns order (AlCo TS)
|
|
1623+++8E77~ 1624+++8E77~ ChanA DS CHP
|
|
1625+++8E77~ ChanB DS CHP
|
|
1626+++8E77~ ChanC DS CHP
|
|
1627+++8E77~ 1628+++8E77~ ;GlobalVars
|
|
1629+++8E77~ MODADDR DW 0
|
|
1630+++8E77~ OrnPtrs DW 0
|
|
1631+++8E77~ SamPtrs DW 0
|
|
1632+++8E77~ PatsPtr DW 0
|
|
1633+++8E77~ AdInPtA DW 0
|
|
1634+++8E77~ AdInPtB DW 0
|
|
1635+++8E77~ AdInPtC DW 0
|
|
1636+++8E77~ CrPsPtr DW 0
|
|
1637+++8E77~ LPosPtr DW 0
|
|
1638+++8E77~ Delay DB 0
|
|
1639+++8E77~ DelyCnt DB 0
|
|
1640+++8E77~ ESldAdd DW 0
|
|
1641+++8E77~ CurESld DW 0
|
|
1642+++8E77~ Env_Del DB 0
|
|
1643+++8E77~ CurEDel DB 0
|
|
1644+++8E77~ Ns_Base DB 0
|
|
1645+++8E77~ AddToNs DB 0
|
|
1646+++8E77~ AddToEn DB 0
|
|
1647+++8E77~ EnvBase DW 0
|
|
1648+++8E77~ AYREGS DS 14
|
|
1649+++8E77~ ENDS
|
|
1650+++8E77~ 1651+++8E77~ VARS1 DS VRS
|
|
1652+++8E77~ VARS2 DS VRS
|
|
1653+++8E77~ 1654+++8E77~ VT_ EQU $-16
|
|
1655+++8E77~ DS 256-16 ;CreatedVolumeTableAddress
|
|
1656+++8E77~ 1657+++8E77~ T1_ EQU VT_+16 ;Tone tables data depacked here
|
|
1658+++8E77~ 1659+++8E77~ T_OLD_1 EQU T1_
|
|
1660+++8E77~ T_OLD_2 EQU T_OLD_1+24
|
|
1661+++8E77~ T_OLD_3 EQU T_OLD_2+24
|
|
1662+++8E77~ T_OLD_0 EQU T_OLD_3+2
|
|
1663+++8E77~ T_NEW_0 EQU T_OLD_0
|
|
1664+++8E77~ T_NEW_1 EQU T_OLD_1
|
|
1665+++8E77~ T_NEW_2 EQU T_NEW_0+24
|
|
1666+++8E77~ T_NEW_3 EQU T_OLD_3
|
|
1667+++8E77~ 1668+++8E77~ PT2EMPTYORN EQU VT_+31 ;1,0,0 sequence
|
|
1669+++8E77~ 1670+++8E77~ NT_ DS 192 ;CreatedNoteTableAddress
|
|
1671+++8E77~ 1672+++8E77~ VAR0END EQU VT_+16 ;INIT zeroes from VARS to VAR0END-1
|
|
1673+++8E77~ 1674+++8E77~ VARSEND EQU $
|
|
1675+++8E77~ MDLADDR EQU $
|
|
1676+++8E77~ 1677+++8E77~ DISPLAY "PTS player size=",$-START
|
|
1678+++8E77~ 1679+++8E77~ ;Release 0 steps:
|
|
1680+++8E77~ ;04/21/2007
|
|
1681+++8E77~ ;Works start (PTxPlay adaptation); first beta.
|
|
1682+++8E77~ ;04/22/2007
|
|
1683+++8E77~ ;Job finished; beta-testing.
|
|
1684+++8E77~ ;04/23/2007
|
|
1685+++8E77~ ;PT v3.7 TS mode corrected (after AlCo remarks).
|
|
1686+++8E77~ ;04/29/2007
|
|
1687+++8E77~ ;Added 1.XX and 2.XX special commands interpretation for PT3
|
|
1688+++8E77~ ;modules of v3.7+.
|
|
1689+++8E77~ 1690+++8E77~ ;Size (minimal build for ZX Spectrum):
|
|
1691+++8E77~ ;Code block #908 bytes
|
|
1692+++8E77~ ;Variables #2BF bytes (can be stripped)
|
|
1693+++8E77~ ;Total size #908+#2BF=#BC7 (3015) bytes
|
|
1694+++8E77~ 1695+++8E77~ ENDMOD
|
|
1696+++8E77~ 1697+++8E77 endif
|
|
1698+++8E77
|
|
0099++ 8E77 PT3.Play=PTS.PLAY
|
|
0100++ 8E77 PT3.Mute=PTS.MUTE
|
|
0101++ 8E77 PT3.End
|
|
0102++ 8E77
|
|
0103++ 8E77 display "PT3 module size: ",PT3.End-PT3.Start
|
|
0104++ 8E77
|
|
0105++ 8E77 endif
|
|
0106++ 8E77
|
|
0419+ 8E77 include "pt2.asm"
|
|
0001++ 8E77 ifndef _pt2_asm_defined
|
|
0002++ 8E77 define _pt2_asm_defined
|
|
0003++ 8E77
|
|
0004++ 8E77 module PT2
|
|
0005++ 8E77
|
|
0006++ 8E77 struct Header
|
|
0007++ 8E77~ Tempo db 0 ;02-ff
|
|
0008++ 8E77~ Length db 0 ;01-ff
|
|
0009++ 8E77~ Loop db 0 ;00-fe
|
|
0010++ 8E77~ Samples
|
|
0011++ 8E77~ ds 64 ;(? 00-36){32}
|
|
0012++ 8E77~ Ornaments
|
|
0013++ 8E77~ ds 32 ;(? 00-36){16}
|
|
0014++ 8E77~ Patterns
|
|
0015++ 8E77~ dw 0 ;? 00-01
|
|
0016++ 8E77~ Name ds 30 ;?
|
|
0017++ 8E77~ Positions
|
|
0018++ 8E77~ db 0 ;00-1f
|
|
0019++ 8E77~ db 0 ;ff|00-1f
|
|
0020++ 8E77 ends
|
|
0021++ 8E77
|
|
0022++ 8E77 Start
|
|
0023++ 8E77 ifndef NoPrologue
|
|
0024++ 8E77~ ld hl,End
|
|
0025++ 8E77~ jr Init
|
|
0026++ 8E77~ jp PTS.PLAY
|
|
0027++ 8E77~ jp PTS.MUTE
|
|
0028++ 8E77 endif
|
|
0029++ 8E77
|
|
0030++ 8E77 3E 02 Init ld a,PTS.SETUP.PT2
|
|
0031++ 8E79 C3 6C 82 jp PTS.INIT
|
|
0032++ 8E7C
|
|
0033++ 8E7C ifdef HaveFormatCheck
|
|
0034++ 8E7C include "format.asm"
|
|
0001+++8E7C ;some format checking macros
|
|
0002+++8E7C ifndef _format_asm_defined
|
|
0003+++8E7C~ define _format_asm_defined
|
|
0004+++8E7C~ 0005+++8E7C~ macro LessOrEqual number
|
|
0006+++8E7C~ ld a,number
|
|
0007+++8E7C~ cp (hl)
|
|
0008+++8E7C~ inc hl
|
|
0009+++8E7C~ ret c
|
|
0010+++8E7C~ endm
|
|
0011+++8E7C~
|
|
0012+++8E7C~ macro Greater number
|
|
0013+++8E7C~ ld a,(hl)
|
|
0014+++8E7C~ inc hl
|
|
0015+++8E7C~ cp number
|
|
0016+++8E7C~ ret c
|
|
0017+++8E7C~ endm
|
|
0018+++8E7C~
|
|
0019+++8E7C~ macro AnyByte
|
|
0020+++8E7C~ inc hl
|
|
0021+++8E7C~ endm
|
|
0022+++8E7C~
|
|
0023+++8E7C~ macro AnyBytes count
|
|
0024+++8E7C~ if count > 7
|
|
0025+++8E7C~ ld a,l
|
|
0026+++8E7C~ add a,count
|
|
0027+++8E7C~ ld l,a
|
|
0028+++8E7C~ adc a,h
|
|
0029+++8E7C~ sub l
|
|
0030+++8E7C~ ld h,a
|
|
0031+++8E7C~ else
|
|
0032+++8E7C~ dup count
|
|
0033+++8E7C~ inc hl
|
|
0034+++8E7C~ edup
|
|
0035+++8E7C~ endif
|
|
0036+++8E7C~ endm
|
|
0037+++8E7C~
|
|
0038+++8E7C~ macro EqualTo number
|
|
0039+++8E7C~ ld a,number
|
|
0040+++8E7C~ cp (hl)
|
|
0041+++8E7C~ inc hl
|
|
0042+++8E7C~ ret nz
|
|
0043+++8E7C~ endm
|
|
0044+++8E7C~ 0045+++8E7C endif
|
|
0046+++8E7C
|
|
0035++ 8E7C
|
|
0036++ 8E7C ;in HL - module addr
|
|
0037++ 8E7C ;out Z - is pt2
|
|
0038++ 8E7C CheckFormat
|
|
0039++ 8E7C ;Tempo
|
|
0040++ 8E7C Greater 2
|
|
0040++ 8E7C 7E > ld a,(hl)
|
|
0040++ 8E7D 23 > inc hl
|
|
0040++ 8E7E FE 02 > cp number
|
|
0040++ 8E80 D8 > ret c
|
|
0041++ 8E81 ;Length
|
|
0042++ 8E81 Greater 1
|
|
0042++ 8E81 7E > ld a,(hl)
|
|
0042++ 8E82 23 > inc hl
|
|
0042++ 8E83 FE 01 > cp number
|
|
0042++ 8E85 D8 > ret c
|
|
0043++ 8E86 ;Loop
|
|
0044++ 8E86 LessOrEqual 254
|
|
0044++ 8E86 3E FE > ld a,number
|
|
0044++ 8E88 BE > cp (hl)
|
|
0044++ 8E89 23 > inc hl
|
|
0044++ 8E8A D8 > ret c
|
|
0045++ 8E8B ;Samples+Ornaments
|
|
0046++ 8E8B 06 30 ld b,(Header.Patterns-Header.Samples)/2
|
|
0047++ 8E8D .samorns
|
|
0048++ 8E8D AnyByte
|
|
0048++ 8E8D 23 > inc hl
|
|
0049++ 8E8E LessOrEqual #36
|
|
0049++ 8E8E 3E 36 > ld a,number
|
|
0049++ 8E90 BE > cp (hl)
|
|
0049++ 8E91 23 > inc hl
|
|
0049++ 8E92 D8 > ret c
|
|
0050++ 8E93 10 F8 djnz .samorns
|
|
0051++ 8E95 ;Patterns
|
|
0052++ 8E95 AnyByte
|
|
0052++ 8E95 23 > inc hl
|
|
0053++ 8E96 LessOrEqual 1
|
|
0053++ 8E96 3E 01 > ld a,number
|
|
0053++ 8E98 BE > cp (hl)
|
|
0053++ 8E99 23 > inc hl
|
|
0053++ 8E9A D8 > ret c
|
|
0054++ 8E9B ;Name
|
|
0055++ 8E9B AnyBytes Header.Positions-Header.Name
|
|
0055++ 8E9B 7D > ld a,l
|
|
0055++ 8E9C C6 1E > add a,count
|
|
0055++ 8E9E 6F > ld l,a
|
|
0055++ 8E9F 8C > adc a,h
|
|
0055++ 8EA0 95 > sub l
|
|
0055++ 8EA1 67 > ld h,a
|
|
0056++ 8EA2 ;Positions
|
|
0057++ 8EA2 ;first should be not marker
|
|
0058++ 8EA2 LessOrEqual #1f
|
|
0058++ 8EA2 3E 1F > ld a,number
|
|
0058++ 8EA4 BE > cp (hl)
|
|
0058++ 8EA5 23 > inc hl
|
|
0058++ 8EA6 D8 > ret c
|
|
0059++ 8EA7 06 FF ld b,255 ;max positions
|
|
0060++ 8EA9 .positions
|
|
0061++ 8EA9 7E ld a,(hl)
|
|
0062++ 8EAA FE FF cp 255
|
|
0063++ 8EAC C8 ret z ;finish
|
|
0064++ 8EAD LessOrEqual #1f
|
|
0064++ 8EAD 3E 1F > ld a,number
|
|
0064++ 8EAF BE > cp (hl)
|
|
0064++ 8EB0 23 > inc hl
|
|
0064++ 8EB1 D8 > ret c
|
|
0065++ 8EB2 10 F5 djnz .positions
|
|
0066++ 8EB4 ;fall through
|
|
0067++ 8EB4 7C .fail ld a,h
|
|
0068++ 8EB5 A7 and a ;reset Z
|
|
0069++ 8EB6 C9 ret
|
|
0070++ 8EB7
|
|
0071++ 8EB7 display "PT2 checker size: ",$-CheckFormat
|
|
0072++ 8EB7 endif
|
|
0073++ 8EB7
|
|
0074++ 8EB7 endmod
|
|
0075++ 8EB7
|
|
0076++ 8EB7 include "PTSPlay.asm"
|
|
0001+++8EB7 ifndef _pts_asm_defined
|
|
0002+++8EB7~ define _pts_asm_defined
|
|
0003+++8EB7~ 0004+++8EB7~ MODULE PTS
|
|
0005+++8EB7~
|
|
0006+++8EB7~ ;Universal PT2'n'PT3 Turbo Sound player for ZX Spectrum
|
|
0007+++8EB7~ ;(c)2004-2007 S.V.Bulba <vorobey@mail.khstu.ru>
|
|
0008+++8EB7~ ;Specially for AlCo
|
|
0009+++8EB7~ ;http://bulba.untergrund.net/ (http://bulba.at.kz/)
|
|
0010+++8EB7~ 0011+++8EB7~ ;Release number
|
|
0012+++8EB7~ Release EQU "0"
|
|
0013+++8EB7~ 0014+++8EB7~ ;Conditional assembly
|
|
0015+++8EB7~ ;1) Current position counters at (Vars1+0) and (Vars2+0)
|
|
0016+++8EB7~ CurPosCounter=0
|
|
0017+++8EB7~ ;2) Allow channels allocation bits at (SETUP)
|
|
0018+++8EB7~ ACBBAC=0
|
|
0019+++8EB7~ ;3) Allow loop checking and disabling
|
|
0020+++8EB7~ LoopChecker=0
|
|
0021+++8EB7~ ;4) Insert official identificator
|
|
0022+++8EB7~ Id=0
|
|
0023+++8EB7~ ;5) Set IY for correct return to ZX Basic
|
|
0024+++8EB7~ Basic=0
|
|
0025+++8EB7~ 0026+++8EB7~ ;Features
|
|
0027+++8EB7~ ;--------
|
|
0028+++8EB7~ ;-Can be compiled at any address (i.e. no need rounding ORG
|
|
0029+++8EB7~ ; address).
|
|
0030+++8EB7~ ;-Variables (VARS) can be located at any address (not only after
|
|
0031+++8EB7~ ; code block).
|
|
0032+++8EB7~ ;-INIT subprogram checks PT3-module version and rightly
|
|
0033+++8EB7~ ; generates both note and volume tables outside of code block
|
|
0034+++8EB7~ ; (in VARS).
|
|
0035+++8EB7~ ;-Two portamento (spc. command 3xxx) algorithms (depending of
|
|
0036+++8EB7~ ; PT3 module version).
|
|
0037+++8EB7~ ;-New 1.XX and 2.XX special command behaviour (only for PT v3.7
|
|
0038+++8EB7~ ; and higher).
|
|
0039+++8EB7~ ;-Any Tempo value are accepted (including Tempo=1 and Tempo=2).
|
|
0040+++8EB7~ ;-TS modes: 2xPT3, 2xPT2 and PT v3.7 TS standard.
|
|
0041+++8EB7~ ;-Fully compatible with Ay_Emul PT3 and PT2 players codes.
|
|
0042+++8EB7~ ;-See also notes at the end of this source code.
|
|
0043+++8EB7~ 0044+++8EB7~ ;Limitations
|
|
0045+++8EB7~ ;-----------
|
|
0046+++8EB7~ ;-Can run in RAM only (self-modified code is used).
|
|
0047+++8EB7~ ;-PT2 position list must be end by #FF marker only.
|
|
0048+++8EB7~ 0049+++8EB7~ ;Warning!!! PLAY subprogram can crash if no module are loaded
|
|
0050+++8EB7~ ;into RAM or INIT subprogram was not called before.
|
|
0051+++8EB7~ 0052+++8EB7~ ;Call MUTE or INIT one more time to mute sound after stopping
|
|
0053+++8EB7~ ;playing
|
|
0054+++8EB7~ 0055+++8EB7~ TonA EQU 0
|
|
0056+++8EB7~ TonB EQU 2
|
|
0057+++8EB7~ TonC EQU 4
|
|
0058+++8EB7~ Noise EQU 6
|
|
0059+++8EB7~ Mixer EQU 7
|
|
0060+++8EB7~ AmplA EQU 8
|
|
0061+++8EB7~ AmplB EQU 9
|
|
0062+++8EB7~ AmplC EQU 10
|
|
0063+++8EB7~ Env EQU 11
|
|
0064+++8EB7~ EnvTp EQU 13
|
|
0065+++8EB7~ 0066+++8EB7~ START
|
|
0067+++8EB7~ 0068+++8EB7~ SETUP.NOLOOP EQU 1
|
|
0069+++8EB7~ SETUP.PT2 EQU 2
|
|
0070+++8EB7~ SETUP.ACB EQU 4
|
|
0071+++8EB7~ SETUP.BAC EQU 8
|
|
0072+++8EB7~ SETUP.TS02 EQU 16
|
|
0073+++8EB7~ SETUP.TSPT3 EQU 32
|
|
0074+++8EB7~ 0075+++8EB7~ SETUP DB 0 ;set bit0, if you want to play without looping
|
|
0076+++8EB7~ ;(optional);
|
|
0077+++8EB7~ ;set bit1 for PT2 and reset for PT3 before
|
|
0078+++8EB7~ ;calling INIT;
|
|
0079+++8EB7~ ;bits2-3: %00-ABC, %01-ACB, %10-BAC (optional);
|
|
0080+++8EB7~ ;bits4-5: %00-no TS, %01-2 modules TS, %10-
|
|
0081+++8EB7~ ;autodetect PT3 TS-format by AlCo (PT 3.7+);
|
|
0082+++8EB7~ ;Remark: old PT3 TS-format by AlCo (PT 3.6) is not
|
|
0083+++8EB7~ ;documented and must be converted to new standard.
|
|
0084+++8EB7~ ;bit6 is set each time, when loop point of 2nd TS
|
|
0085+++8EB7~ ;module is passed (optional).
|
|
0086+++8EB7~ ;bit7 is set each time, when loop point of 1st TS
|
|
0087+++8EB7~ ;or of single module is passed (optional).
|
|
0088+++8EB7~ 0089+++8EB7~ ;Identifier
|
|
0090+++8EB7~ IF Id
|
|
0091+++8EB7~ DB "=UniPT2/PT3/TS-Player r.",Release,"="
|
|
0092+++8EB7~ ENDIF
|
|
0093+++8EB7~ 0094+++8EB7~ IF LoopChecker
|
|
0095+++8EB7~ CHECKLP LD HL,SETUP
|
|
0096+++8EB7~ BIT 0,(IY-100+VRS.ModNum)
|
|
0097+++8EB7~ JR Z,CHL1
|
|
0098+++8EB7~ SET 6,(HL)
|
|
0099+++8EB7~ JR CHL2
|
|
0100+++8EB7~ CHL1 SET 7,(HL)
|
|
0101+++8EB7~ CHL2 BIT 0,(HL)
|
|
0102+++8EB7~ RET Z
|
|
0103+++8EB7~ POP HL
|
|
0104+++8EB7~ INC (IY-100+VRS.DelyCnt)
|
|
0105+++8EB7~ INC (IY-100+VRS.ChanA+CHP.NtSkCn)
|
|
0106+++8EB7~ XOR A
|
|
0107+++8EB7~ LD (IY-100+VRS.AYREGS+AmplA),A
|
|
0108+++8EB7~ LD (IY-100+VRS.AYREGS+AmplB),A
|
|
0109+++8EB7~ LD (IY-100+VRS.AYREGS+AmplC),A
|
|
0110+++8EB7~ RET
|
|
0111+++8EB7~ ENDIF
|
|
0112+++8EB7~ 0113+++8EB7~ MUTE XOR A
|
|
0114+++8EB7~ LD H,A
|
|
0115+++8EB7~ LD L,A
|
|
0116+++8EB7~ LD (VARS1+VRS.AYREGS+AmplA),A
|
|
0117+++8EB7~ LD (VARS1+VRS.AYREGS+AmplB),HL
|
|
0118+++8EB7~ LD (VARS2+VRS.AYREGS+AmplA),A
|
|
0119+++8EB7~ LD (VARS2+VRS.AYREGS+AmplB),HL
|
|
0120+++8EB7~ JP ROUT
|
|
0121+++8EB7~ 0122+++8EB7~ INIT
|
|
0123+++8EB7~ ;HL - AddressOfModule
|
|
0124+++8EB7~ ;DE - AddresOf2ndModule
|
|
0125+++8EB7~ ;A - mode
|
|
0126+++8EB7~ PUSH DE
|
|
0127+++8EB7~ PUSH HL
|
|
0128+++8EB7~ LD HL,VARS
|
|
0129+++8EB7~ LD (HL),0
|
|
0130+++8EB7~ LD DE,VARS+1
|
|
0131+++8EB7~ LD BC,VAR0END-VARS-1
|
|
0132+++8EB7~ LDIR
|
|
0133+++8EB7~ INC HL
|
|
0134+++8EB7~ LD (VARS1+VRS.AdInPtA),HL ;ptr to zero
|
|
0135+++8EB7~ LD (VARS2+VRS.AdInPtA),HL
|
|
0136+++8EB7~ 0137+++8EB7~ POP HL
|
|
0138+++8EB7~ LD IY,VARS1+100
|
|
0139+++8EB7~ LD (SETUP),A
|
|
0140+++8EB7~ AND SETUP.PT2
|
|
0141+++8EB7~ JP NZ,I_PT2
|
|
0142+++8EB7~ 0143+++8EB7~ CALL INITPT3
|
|
0144+++8EB7~ LD HL,(e_-SamCnv-2)*256+#18
|
|
0145+++8EB7~ LD (SamCnv),HL
|
|
0146+++8EB7~ LD A,#BA
|
|
0147+++8EB7~ LD (OrnCP),A
|
|
0148+++8EB7~ LD (SamCP),A
|
|
0149+++8EB7~ LD A,#7B
|
|
0150+++8EB7~ LD (OrnLD),A
|
|
0151+++8EB7~ LD (SamLD),A
|
|
0152+++8EB7~ LD A,#87
|
|
0153+++8EB7~ LD (SamClc2),A
|
|
0154+++8EB7~ POP HL
|
|
0155+++8EB7~ ;Use version and ton table of 1st module
|
|
0156+++8EB7~ LD A,(IX+13-100) ;EXTRACT VERSION NUMBER
|
|
0157+++8EB7~ SUB #30
|
|
0158+++8EB7~ JR C,L20
|
|
0159+++8EB7~ CP 10
|
|
0160+++8EB7~ JR C,L21
|
|
0161+++8EB7~ L20 LD A,6
|
|
0162+++8EB7~ L21 LD (Version),A
|
|
0163+++8EB7~ PUSH AF ;VolTable version
|
|
0164+++8EB7~ CP 4
|
|
0165+++8EB7~ LD A,(IX+99-100) ;TONE TABLE NUMBER
|
|
0166+++8EB7~ RLA
|
|
0167+++8EB7~ AND 7
|
|
0168+++8EB7~ PUSH AF ;NoteTable number
|
|
0169+++8EB7~ 0170+++8EB7~ LD IY,VARS2+100
|
|
0171+++8EB7~ LD A,(SETUP)
|
|
0172+++8EB7~ AND SETUP.TS02|SETUP.TSPT3
|
|
0173+++8EB7~ JR Z,NOTS
|
|
0174+++8EB7~ CP SETUP.TS02
|
|
0175+++8EB7~ JR Z,TwoPT3s
|
|
0176+++8EB7~ LD A,(Version)
|
|
0177+++8EB7~ CP 7
|
|
0178+++8EB7~ JR C,NOTS
|
|
0179+++8EB7~ LD A,(IX+98-100) ;ALCO TS MARKER
|
|
0180+++8EB7~ CP #20
|
|
0181+++8EB7~ JR Z,NOTS
|
|
0182+++8EB7~ LD HL,VARS1
|
|
0183+++8EB7~ LD DE,VARS2
|
|
0184+++8EB7~ LD BC,VRS
|
|
0185+++8EB7~ LDIR
|
|
0186+++8EB7~ SET 1,(IY-100+VRS.ModNum)
|
|
0187+++8EB7~ LD C,A
|
|
0188+++8EB7~ ADD A,A
|
|
0189+++8EB7~ ADD A,C
|
|
0190+++8EB7~ SUB 2
|
|
0191+++8EB7~ LD (TSSub),A
|
|
0192+++8EB7~ JR AlCoTS_
|
|
0193+++8EB7~ TwoPT3s CALL INITPT3
|
|
0194+++8EB7~ AlCoTS_ LD A,1
|
|
0195+++8EB7~ LD (is_ts),A
|
|
0196+++8EB7~ SET 0,(IY-100+VRS.ModNum)
|
|
0197+++8EB7~ 0198+++8EB7~ NOTS LD BC,PT3PD
|
|
0199+++8EB7~ LD HL,0
|
|
0200+++8EB7~ LD DE,PT3EMPTYORN
|
|
0201+++8EB7~ JR INITCOMMON
|
|
0202+++8EB7~ 0203+++8EB7~ I_PT2 CALL INITPT2
|
|
0204+++8EB7~ LD HL,#51CB
|
|
0205+++8EB7~ LD (SamCnv),HL
|
|
0206+++8EB7~ LD A,#BB
|
|
0207+++8EB7~ LD (OrnCP),A
|
|
0208+++8EB7~ LD (SamCP),A
|
|
0209+++8EB7~ LD A,#7A
|
|
0210+++8EB7~ LD (OrnLD),A
|
|
0211+++8EB7~ LD (SamLD),A
|
|
0212+++8EB7~ LD A,#80
|
|
0213+++8EB7~ LD (SamClc2),A
|
|
0214+++8EB7~ POP HL
|
|
0215+++8EB7~ LD A,5
|
|
0216+++8EB7~ LD (Version),A
|
|
0217+++8EB7~ PUSH AF
|
|
0218+++8EB7~ LD A,2
|
|
0219+++8EB7~ PUSH AF
|
|
0220+++8EB7~ 0221+++8EB7~ LD A,(SETUP)
|
|
0222+++8EB7~ AND SETUP.TS02|SETUP.TSPT3
|
|
0223+++8EB7~ JR Z,NOTS2
|
|
0224+++8EB7~ 0225+++8EB7~ LD IY,VARS2+100
|
|
0226+++8EB7~ LD A,1
|
|
0227+++8EB7~ LD (is_ts),A
|
|
0228+++8EB7~ SET 0,(IY-100+VRS.ModNum)
|
|
0229+++8EB7~ CALL INITPT2
|
|
0230+++8EB7~ 0231+++8EB7~ NOTS2 LD BC,PT2PD
|
|
0232+++8EB7~ LD HL,#8687
|
|
0233+++8EB7~ LD DE,PT2EMPTYORN
|
|
0234+++8EB7~ 0235+++8EB7~ INITCOMMON
|
|
0236+++8EB7~ 0237+++8EB7~ IF Basic
|
|
0238+++8EB7~ LD IY,#5C3A
|
|
0239+++8EB7~ ENDIF
|
|
0240+++8EB7~ 0241+++8EB7~ LD (PTDEC),BC
|
|
0242+++8EB7~ LD (PsCalc),HL
|
|
0243+++8EB7~ PUSH DE
|
|
0244+++8EB7~ 0245+++8EB7~ ;note table data depacker
|
|
0246+++8EB7~ ;(c) Ivan Roshin
|
|
0247+++8EB7~ LD DE,T_PACK
|
|
0248+++8EB7~ LD BC,T1_+(2*49)-1
|
|
0249+++8EB7~ TP_0 LD A,(DE)
|
|
0250+++8EB7~ INC DE
|
|
0251+++8EB7~ CP 15*2
|
|
0252+++8EB7~ JR NC,TP_1
|
|
0253+++8EB7~ LD H,A
|
|
0254+++8EB7~ LD A,(DE)
|
|
0255+++8EB7~ LD L,A
|
|
0256+++8EB7~ INC DE
|
|
0257+++8EB7~ JR TP_2
|
|
0258+++8EB7~ TP_1 PUSH DE
|
|
0259+++8EB7~ LD D,0
|
|
0260+++8EB7~ LD E,A
|
|
0261+++8EB7~ ADD HL,DE
|
|
0262+++8EB7~ ADD HL,DE
|
|
0263+++8EB7~ POP DE
|
|
0264+++8EB7~ TP_2 LD A,H
|
|
0265+++8EB7~ LD (BC),A
|
|
0266+++8EB7~ DEC BC
|
|
0267+++8EB7~ LD A,L
|
|
0268+++8EB7~ LD (BC),A
|
|
0269+++8EB7~ DEC BC
|
|
0270+++8EB7~ SUB (#F8*2)&255
|
|
0271+++8EB7~ JR NZ,TP_0
|
|
0272+++8EB7~ 0273+++8EB7~ INC A
|
|
0274+++8EB7~ LD (VARS1+VRS.DelyCnt),A
|
|
0275+++8EB7~ LD (VARS2+VRS.DelyCnt),A
|
|
0276+++8EB7~ LD HL,#F001 ;H - CHP.Volume, L - CHP.NtSkCn
|
|
0277+++8EB7~ LD (VARS1+VRS.ChanA+CHP.NtSkCn),HL
|
|
0278+++8EB7~ LD (VARS1+VRS.ChanB+CHP.NtSkCn),HL
|
|
0279+++8EB7~ LD (VARS1+VRS.ChanC+CHP.NtSkCn),HL
|
|
0280+++8EB7~ LD (VARS2+VRS.ChanA+CHP.NtSkCn),HL
|
|
0281+++8EB7~ LD (VARS2+VRS.ChanB+CHP.NtSkCn),HL
|
|
0282+++8EB7~ LD (VARS2+VRS.ChanC+CHP.NtSkCn),HL
|
|
0283+++8EB7~ POP HL
|
|
0284+++8EB7~ LD (VARS1+VRS.ChanA+CHP.OrnPtr),HL
|
|
0285+++8EB7~ LD (VARS1+VRS.ChanB+CHP.OrnPtr),HL
|
|
0286+++8EB7~ LD (VARS1+VRS.ChanC+CHP.OrnPtr),HL
|
|
0287+++8EB7~ LD (VARS2+VRS.ChanA+CHP.OrnPtr),HL
|
|
0288+++8EB7~ LD (VARS2+VRS.ChanB+CHP.OrnPtr),HL
|
|
0289+++8EB7~ LD (VARS2+VRS.ChanC+CHP.OrnPtr),HL
|
|
0290+++8EB7~ 0291+++8EB7~ POP AF
|
|
0292+++8EB7~ 0293+++8EB7~ ;NoteTableCreator (c) Ivan Roshin
|
|
0294+++8EB7~ ;A - NoteTableNumber*2+VersionForNoteTable
|
|
0295+++8EB7~ ;(xx1b - 3.xx..3.4r, xx0b - 3.4x..3.6x..VTII1.0)
|
|
0296+++8EB7~ 0297+++8EB7~ LD HL,NT_DATA
|
|
0298+++8EB7~ LD D,0
|
|
0299+++8EB7~ ADD A,A
|
|
0300+++8EB7~ LD E,A
|
|
0301+++8EB7~ ADD HL,DE
|
|
0302+++8EB7~ LD E,(HL)
|
|
0303+++8EB7~ INC HL
|
|
0304+++8EB7~ SRL E
|
|
0305+++8EB7~ SBC A,A
|
|
0306+++8EB7~ AND #A7 ;#00 (NOP) or #A7 (AND A)
|
|
0307+++8EB7~ LD (L3),A
|
|
0308+++8EB7~ EX DE,HL
|
|
0309+++8EB7~ LD BC,T1_
|
|
0310+++8EB7~ ADD HL,BC
|
|
0311+++8EB7~ 0312+++8EB7~ LD A,(DE)
|
|
0313+++8EB7~ ADD A,T_&255
|
|
0314+++8EB7~ LD C,A
|
|
0315+++8EB7~ ADC A,T_/256
|
|
0316+++8EB7~ SUB C
|
|
0317+++8EB7~ LD B,A
|
|
0318+++8EB7~ PUSH BC
|
|
0319+++8EB7~ LD DE,NT_
|
|
0320+++8EB7~ PUSH DE
|
|
0321+++8EB7~ 0322+++8EB7~ LD B,12
|
|
0323+++8EB7~ L1 PUSH BC
|
|
0324+++8EB7~ LD C,(HL)
|
|
0325+++8EB7~ INC HL
|
|
0326+++8EB7~ PUSH HL
|
|
0327+++8EB7~ LD B,(HL)
|
|
0328+++8EB7~ 0329+++8EB7~ PUSH DE
|
|
0330+++8EB7~ EX DE,HL
|
|
0331+++8EB7~ LD DE,23
|
|
0332+++8EB7~ LD IXH,8
|
|
0333+++8EB7~ 0334+++8EB7~ L2 SRL B
|
|
0335+++8EB7~ RR C
|
|
0336+++8EB7~ L3 DB #19 ;AND A or NOP
|
|
0337+++8EB7~ LD A,C
|
|
0338+++8EB7~ ADC A,D ;=ADC 0
|
|
0339+++8EB7~ LD (HL),A
|
|
0340+++8EB7~ INC HL
|
|
0341+++8EB7~ LD A,B
|
|
0342+++8EB7~ ADC A,D
|
|
0343+++8EB7~ LD (HL),A
|
|
0344+++8EB7~ ADD HL,DE
|
|
0345+++8EB7~ DEC IXH
|
|
0346+++8EB7~ JR NZ,L2
|
|
0347+++8EB7~ 0348+++8EB7~ POP DE
|
|
0349+++8EB7~ INC DE
|
|
0350+++8EB7~ INC DE
|
|
0351+++8EB7~ POP HL
|
|
0352+++8EB7~ INC HL
|
|
0353+++8EB7~ POP BC
|
|
0354+++8EB7~ DJNZ L1
|
|
0355+++8EB7~ 0356+++8EB7~ POP HL
|
|
0357+++8EB7~ POP DE
|
|
0358+++8EB7~ 0359+++8EB7~ LD A,E
|
|
0360+++8EB7~ CP TCOLD_1&255
|
|
0361+++8EB7~ JR NZ,CORR_1
|
|
0362+++8EB7~ LD A,#FD
|
|
0363+++8EB7~ LD (NT_+#2E),A
|
|
0364+++8EB7~ 0365+++8EB7~ CORR_1 LD A,(DE)
|
|
0366+++8EB7~ AND A
|
|
0367+++8EB7~ JR Z,TC_EXIT
|
|
0368+++8EB7~ RRA
|
|
0369+++8EB7~ PUSH AF
|
|
0370+++8EB7~ ADD A,A
|
|
0371+++8EB7~ LD C,A
|
|
0372+++8EB7~ ADD HL,BC
|
|
0373+++8EB7~ POP AF
|
|
0374+++8EB7~ JR NC,CORR_2
|
|
0375+++8EB7~ DEC (HL)
|
|
0376+++8EB7~ DEC (HL)
|
|
0377+++8EB7~ CORR_2 INC (HL)
|
|
0378+++8EB7~ AND A
|
|
0379+++8EB7~ SBC HL,BC
|
|
0380+++8EB7~ INC DE
|
|
0381+++8EB7~ JR CORR_1
|
|
0382+++8EB7~ 0383+++8EB7~ TC_EXIT
|
|
0384+++8EB7~ 0385+++8EB7~ POP AF
|
|
0386+++8EB7~ 0387+++8EB7~ ;VolTableCreator (c) Ivan Roshin
|
|
0388+++8EB7~ ;A - VersionForVolumeTable (0..4 - 3.xx..3.4x;
|
|
0389+++8EB7~ ;5.. - 2.x,3.5x..3.6x..VTII1.0)
|
|
0390+++8EB7~ 0391+++8EB7~ CP 5
|
|
0392+++8EB7~ LD HL,#11
|
|
0393+++8EB7~ LD D,H
|
|
0394+++8EB7~ LD E,H
|
|
0395+++8EB7~ LD A,#17
|
|
0396+++8EB7~ JR NC,M1
|
|
0397+++8EB7~ DEC L
|
|
0398+++8EB7~ LD E,L
|
|
0399+++8EB7~ XOR A
|
|
0400+++8EB7~ M1 LD (M2),A
|
|
0401+++8EB7~ 0402+++8EB7~ LD IX,VT_+16
|
|
0403+++8EB7~ 0404+++8EB7~ LD C,#F
|
|
0405+++8EB7~ INITV2 PUSH HL
|
|
0406+++8EB7~ 0407+++8EB7~ ADD HL,DE
|
|
0408+++8EB7~ EX DE,HL
|
|
0409+++8EB7~ SBC HL,HL
|
|
0410+++8EB7~ 0411+++8EB7~ LD B,#10
|
|
0412+++8EB7~ INITV1 LD A,L
|
|
0413+++8EB7~ M2 DB #7D
|
|
0414+++8EB7~ LD A,H
|
|
0415+++8EB7~ ADC A,0
|
|
0416+++8EB7~ LD (IX),A
|
|
0417+++8EB7~ INC IX
|
|
0418+++8EB7~ ADD HL,DE
|
|
0419+++8EB7~ DJNZ INITV1
|
|
0420+++8EB7~ 0421+++8EB7~ POP HL
|
|
0422+++8EB7~ LD A,E
|
|
0423+++8EB7~ CP #77
|
|
0424+++8EB7~ JR NZ,M3
|
|
0425+++8EB7~ INC E
|
|
0426+++8EB7~ M3 DEC C
|
|
0427+++8EB7~ JR NZ,INITV2
|
|
0428+++8EB7~ 0429+++8EB7~ JP ROUT
|
|
0430+++8EB7~ 0431+++8EB7~ INITPT3 CALL SETMDAD
|
|
0432+++8EB7~ PUSH HL
|
|
0433+++8EB7~ LD DE,100
|
|
0434+++8EB7~ ADD HL,DE
|
|
0435+++8EB7~ LD A,(HL)
|
|
0436+++8EB7~ LD (IY-100+VRS.Delay),A
|
|
0437+++8EB7~ PUSH HL
|
|
0438+++8EB7~ POP IX
|
|
0439+++8EB7~ ADD HL,DE
|
|
0440+++8EB7~ CALL SETCPPT
|
|
0441+++8EB7~ LD E,(IX+102-100)
|
|
0442+++8EB7~ INC HL
|
|
0443+++8EB7~ 0444+++8EB7~ IF CurPosCounter
|
|
0445+++8EB7~ LD (IY-100+VRS.PosSub),L
|
|
0446+++8EB7~ ENDIF
|
|
0447+++8EB7~ 0448+++8EB7~ ADD HL,DE
|
|
0449+++8EB7~ CALL SETLPPT
|
|
0450+++8EB7~ POP DE
|
|
0451+++8EB7~ LD L,(IX+103-100)
|
|
0452+++8EB7~ LD H,(IX+104-100)
|
|
0453+++8EB7~ ADD HL,DE
|
|
0454+++8EB7~ CALL SETPTPT
|
|
0455+++8EB7~ LD HL,169
|
|
0456+++8EB7~ ADD HL,DE
|
|
0457+++8EB7~ CALL SETORPT
|
|
0458+++8EB7~ LD HL,105
|
|
0459+++8EB7~ ADD HL,DE
|
|
0460+++8EB7~ 0461+++8EB7~ SETSMPT LD (IY-100+VRS.SamPtrs),L
|
|
0462+++8EB7~ LD (IY-100+VRS.SamPtrs+1),H
|
|
0463+++8EB7~ RET
|
|
0464+++8EB7~ 0465+++8EB7~ INITPT2 LD A,(HL)
|
|
0466+++8EB7~ LD (IY-100+VRS.Delay),A
|
|
0467+++8EB7~ PUSH HL
|
|
0468+++8EB7~ PUSH HL
|
|
0469+++8EB7~ PUSH HL
|
|
0470+++8EB7~ INC HL
|
|
0471+++8EB7~ INC HL
|
|
0472+++8EB7~ LD A,(HL)
|
|
0473+++8EB7~ INC HL
|
|
0474+++8EB7~ CALL SETSMPT
|
|
0475+++8EB7~ LD E,(HL)
|
|
0476+++8EB7~ INC HL
|
|
0477+++8EB7~ LD D,(HL)
|
|
0478+++8EB7~ POP HL
|
|
0479+++8EB7~ AND A
|
|
0480+++8EB7~ SBC HL,DE
|
|
0481+++8EB7~ CALL SETMDAD
|
|
0482+++8EB7~ POP HL
|
|
0483+++8EB7~ LD DE,67
|
|
0484+++8EB7~ ADD HL,DE
|
|
0485+++8EB7~ CALL SETORPT
|
|
0486+++8EB7~ LD E,32
|
|
0487+++8EB7~ ADD HL,DE
|
|
0488+++8EB7~ LD C,(HL)
|
|
0489+++8EB7~ INC HL
|
|
0490+++8EB7~ LD B,(HL)
|
|
0491+++8EB7~ LD E,30
|
|
0492+++8EB7~ ADD HL,DE
|
|
0493+++8EB7~ CALL SETCPPT
|
|
0494+++8EB7~ LD E,A
|
|
0495+++8EB7~ INC HL
|
|
0496+++8EB7~ 0497+++8EB7~ IF CurPosCounter
|
|
0498+++8EB7~ LD (IY-100+VRS.PosSub),L
|
|
0499+++8EB7~ ENDIF
|
|
0500+++8EB7~ 0501+++8EB7~ ADD HL,DE
|
|
0502+++8EB7~ CALL SETLPPT
|
|
0503+++8EB7~ POP HL
|
|
0504+++8EB7~ ADD HL,BC
|
|
0505+++8EB7~ 0506+++8EB7~ SETPTPT LD (IY-100+VRS.PatsPtr),L
|
|
0507+++8EB7~ LD (IY-100+VRS.PatsPtr+1),H
|
|
0508+++8EB7~ RET
|
|
0509+++8EB7~ 0510+++8EB7~ SETMDAD LD (IY-100+VRS.MODADDR),L
|
|
0511+++8EB7~ LD (IY-100+VRS.MODADDR+1),H
|
|
0512+++8EB7~ RET
|
|
0513+++8EB7~ 0514+++8EB7~ SETORPT LD (IY-100+VRS.OrnPtrs),L
|
|
0515+++8EB7~ LD (IY-100+VRS.OrnPtrs+1),H
|
|
0516+++8EB7~ RET
|
|
0517+++8EB7~ 0518+++8EB7~ SETCPPT LD (IY-100+VRS.CrPsPtr),L
|
|
0519+++8EB7~ LD (IY-100+VRS.CrPsPtr+1),H
|
|
0520+++8EB7~ RET
|
|
0521+++8EB7~ 0522+++8EB7~ SETLPPT LD (IY-100+VRS.LPosPtr),L
|
|
0523+++8EB7~ LD (IY-100+VRS.LPosPtr+1),H
|
|
0524+++8EB7~ RET
|
|
0525+++8EB7~ 0526+++8EB7~ SETENBS LD (IY-100+VRS.EnvBase),L
|
|
0527+++8EB7~ LD (IY-100+VRS.EnvBase+1),H
|
|
0528+++8EB7~ RET
|
|
0529+++8EB7~ 0530+++8EB7~ SETESLD LD (IY-100+VRS.CurESld),L
|
|
0531+++8EB7~ LD (IY-100+VRS.CurESld+1),H
|
|
0532+++8EB7~ RET
|
|
0533+++8EB7~ 0534+++8EB7~ GETIX PUSH IY
|
|
0535+++8EB7~ POP IX
|
|
0536+++8EB7~ ADD IX,DE
|
|
0537+++8EB7~ RET
|
|
0538+++8EB7~ 0539+++8EB7~ PTDECOD CALL GETIX
|
|
0540+++8EB7~ PTDEC EQU $+1
|
|
0541+++8EB7~ JP #C3C3
|
|
0542+++8EB7~ 0543+++8EB7~ ;PT2 pattern decoder
|
|
0544+++8EB7~ PD2_SAM CALL SETSAM
|
|
0545+++8EB7~ JR PD2_LOOP
|
|
0546+++8EB7~ 0547+++8EB7~ PD2_EOff LD (IX-12+CHP.Env_En),A
|
|
0548+++8EB7~ JR PD2_LOOP
|
|
0549+++8EB7~ 0550+++8EB7~ PD2_ENV LD (IX-12+CHP.Env_En),16
|
|
0551+++8EB7~ LD (IY-100+VRS.AYREGS+EnvTp),A
|
|
0552+++8EB7~ LD A,(BC)
|
|
0553+++8EB7~ INC BC
|
|
0554+++8EB7~ LD L,A
|
|
0555+++8EB7~ LD A,(BC)
|
|
0556+++8EB7~ INC BC
|
|
0557+++8EB7~ LD H,A
|
|
0558+++8EB7~ CALL SETENBS
|
|
0559+++8EB7~ JR PD2_LOOP
|
|
0560+++8EB7~ 0561+++8EB7~ PD2_ORN CALL SETORN
|
|
0562+++8EB7~ JR PD2_LOOP
|
|
0563+++8EB7~ 0564+++8EB7~ PD2_SKIP INC A
|
|
0565+++8EB7~ LD (IX-12+CHP.NNtSkp),A
|
|
0566+++8EB7~ JR PD2_LOOP
|
|
0567+++8EB7~ 0568+++8EB7~ PD2_VOL RRCA
|
|
0569+++8EB7~ RRCA
|
|
0570+++8EB7~ RRCA
|
|
0571+++8EB7~ RRCA
|
|
0572+++8EB7~ LD (IX-12+CHP.Volume),A
|
|
0573+++8EB7~ JR PD2_LOOP
|
|
0574+++8EB7~ 0575+++8EB7~ PD2_DEL CALL C_DELAY
|
|
0576+++8EB7~ JR PD2_LOOP
|
|
0577+++8EB7~ 0578+++8EB7~ PD2_GLIS SET 2,(IX-12+CHP.Flags)
|
|
0579+++8EB7~ INC A
|
|
0580+++8EB7~ LD (IX-12+CHP.TnSlDl),A
|
|
0581+++8EB7~ LD (IX-12+CHP.TSlCnt),A
|
|
0582+++8EB7~ LD A,(BC)
|
|
0583+++8EB7~ INC BC
|
|
0584+++8EB7~ LD (IX-12+CHP.TSlStp),A
|
|
0585+++8EB7~ ADD A,A
|
|
0586+++8EB7~ SBC A,A
|
|
0587+++8EB7~ LD (IX-12+CHP.TSlStp+1),A
|
|
0588+++8EB7~ SCF
|
|
0589+++8EB7~ JR PD2_LP2
|
|
0590+++8EB7~ 0591+++8EB7~ PT2PD AND A
|
|
0592+++8EB7~ 0593+++8EB7~ PD2_LP2 EX AF,AF'
|
|
0594+++8EB7~ 0595+++8EB7~ PD2_LOOP LD A,(BC)
|
|
0596+++8EB7~ INC BC
|
|
0597+++8EB7~ ADD A,#20
|
|
0598+++8EB7~ JR Z,PD2_REL
|
|
0599+++8EB7~ JR C,PD2_SAM
|
|
0600+++8EB7~ ADD A,96
|
|
0601+++8EB7~ JR C,PD2_NOTE
|
|
0602+++8EB7~ INC A
|
|
0603+++8EB7~ JR Z,PD2_EOff
|
|
0604+++8EB7~ ADD A,15
|
|
0605+++8EB7~ JP Z,PD_FIN
|
|
0606+++8EB7~ JR C,PD2_ENV
|
|
0607+++8EB7~ ADD A,#10
|
|
0608+++8EB7~ JR C,PD2_ORN
|
|
0609+++8EB7~ ADD A,#40
|
|
0610+++8EB7~ JR C,PD2_SKIP
|
|
0611+++8EB7~ ADD A,#10
|
|
0612+++8EB7~ JR C,PD2_VOL
|
|
0613+++8EB7~ INC A
|
|
0614+++8EB7~ JR Z,PD2_DEL
|
|
0615+++8EB7~ INC A
|
|
0616+++8EB7~ JR Z,PD2_GLIS
|
|
0617+++8EB7~ INC A
|
|
0618+++8EB7~ JR Z,PD2_PORT
|
|
0619+++8EB7~ INC A
|
|
0620+++8EB7~ JR Z,PD2_STOP
|
|
0621+++8EB7~ LD A,(BC)
|
|
0622+++8EB7~ INC BC
|
|
0623+++8EB7~ LD (IX-12+CHP.CrNsSl),A
|
|
0624+++8EB7~ JR PD2_LOOP
|
|
0625+++8EB7~ 0626+++8EB7~ PD2_PORT RES 2,(IX-12+CHP.Flags)
|
|
0627+++8EB7~ LD A,(BC)
|
|
0628+++8EB7~ INC BC
|
|
0629+++8EB7~ INC BC ;ignoring precalc delta to right sound
|
|
0630+++8EB7~ INC BC
|
|
0631+++8EB7~ SCF
|
|
0632+++8EB7~ JR PD2_LP2
|
|
0633+++8EB7~ 0634+++8EB7~ PD2_STOP LD (IX-12+CHP.TSlCnt),A
|
|
0635+++8EB7~ JR PD2_LOOP
|
|
0636+++8EB7~ 0637+++8EB7~ PD2_REL LD (IX-12+CHP.Flags),A
|
|
0638+++8EB7~ JR PD2_EXIT
|
|
0639+++8EB7~ 0640+++8EB7~ PD2_NOTE LD L,A
|
|
0641+++8EB7~ LD A,(IX-12+CHP.Note)
|
|
0642+++8EB7~ LD (PrNote+1),A
|
|
0643+++8EB7~ LD (IX-12+CHP.Note),L
|
|
0644+++8EB7~ XOR A
|
|
0645+++8EB7~ LD (IX-12+CHP.TSlCnt),A
|
|
0646+++8EB7~ SET 0,(IX-12+CHP.Flags)
|
|
0647+++8EB7~ EX AF,AF'
|
|
0648+++8EB7~ JR NC,NOGLIS2
|
|
0649+++8EB7~ BIT 2,(IX-12+CHP.Flags)
|
|
0650+++8EB7~ JR NZ,NOPORT2
|
|
0651+++8EB7~ LD (LoStep),A
|
|
0652+++8EB7~ ADD A,A
|
|
0653+++8EB7~ SBC A,A
|
|
0654+++8EB7~ EX AF,AF'
|
|
0655+++8EB7~ LD H,A
|
|
0656+++8EB7~ LD L,A
|
|
0657+++8EB7~ INC A
|
|
0658+++8EB7~ CALL SETPORT
|
|
0659+++8EB7~ NOPORT2 LD (IX-12+CHP.TSlCnt),1
|
|
0660+++8EB7~ NOGLIS2 XOR A
|
|
0661+++8EB7~ 0662+++8EB7~ 0663+++8EB7~ PD2_EXIT LD (IX-12+CHP.PsInSm),A
|
|
0664+++8EB7~ LD (IX-12+CHP.PsInOr),A
|
|
0665+++8EB7~ LD (IX-12+CHP.CrTnSl),A
|
|
0666+++8EB7~ LD (IX-12+CHP.CrTnSl+1),A
|
|
0667+++8EB7~ JP PD_FIN
|
|
0668+++8EB7~ 0669+++8EB7~ ;PT3 pattern decoder
|
|
0670+++8EB7~ PD_OrSm LD (IX-12+CHP.Env_En),0
|
|
0671+++8EB7~ CALL SETORN
|
|
0672+++8EB7~ PD_SAM_ LD A,(BC)
|
|
0673+++8EB7~ INC BC
|
|
0674+++8EB7~ RRCA
|
|
0675+++8EB7~ 0676+++8EB7~ PD_SAM CALL SETSAM
|
|
0677+++8EB7~ JR PD_LOOP
|
|
0678+++8EB7~ 0679+++8EB7~ PD_VOL RRCA
|
|
0680+++8EB7~ RRCA
|
|
0681+++8EB7~ RRCA
|
|
0682+++8EB7~ RRCA
|
|
0683+++8EB7~ LD (IX-12+CHP.Volume),A
|
|
0684+++8EB7~ JR PD_LP2
|
|
0685+++8EB7~
|
|
0686+++8EB7~ PD_EOff LD (IX-12+CHP.Env_En),A
|
|
0687+++8EB7~ LD (IX-12+CHP.PsInOr),A
|
|
0688+++8EB7~ JR PD_LP2
|
|
0689+++8EB7~ 0690+++8EB7~ PD_SorE DEC A
|
|
0691+++8EB7~ JR NZ,PD_ENV
|
|
0692+++8EB7~ LD A,(BC)
|
|
0693+++8EB7~ INC BC
|
|
0694+++8EB7~ LD (IX-12+CHP.NNtSkp),A
|
|
0695+++8EB7~ JR PD_LP2
|
|
0696+++8EB7~ 0697+++8EB7~ PD_ENV CALL SETENV
|
|
0698+++8EB7~ JR PD_LP2
|
|
0699+++8EB7~ 0700+++8EB7~ PD_ORN CALL SETORN
|
|
0701+++8EB7~ JR PD_LOOP
|
|
0702+++8EB7~ 0703+++8EB7~ PD_ESAM LD (IX-12+CHP.Env_En),A
|
|
0704+++8EB7~ LD (IX-12+CHP.PsInOr),A
|
|
0705+++8EB7~ CALL NZ,SETENV
|
|
0706+++8EB7~ JR PD_SAM_
|
|
0707+++8EB7~ 0708+++8EB7~ PT3PD LD A,(IX-12+CHP.Note)
|
|
0709+++8EB7~ LD (PrNote+1),A
|
|
0710+++8EB7~ LD L,(IX-12+CHP.CrTnSl)
|
|
0711+++8EB7~ LD H,(IX-12+CHP.CrTnSl+1)
|
|
0712+++8EB7~ LD (PrSlide+1),HL
|
|
0713+++8EB7~ 0714+++8EB7~ PD_LOOP LD DE,#2010
|
|
0715+++8EB7~ PD_LP2 LD A,(BC)
|
|
0716+++8EB7~ INC BC
|
|
0717+++8EB7~ ADD A,E
|
|
0718+++8EB7~ JR C,PD_OrSm
|
|
0719+++8EB7~ ADD A,D
|
|
0720+++8EB7~ JR Z,PD_FIN
|
|
0721+++8EB7~ JR C,PD_SAM
|
|
0722+++8EB7~ ADD A,E
|
|
0723+++8EB7~ JR Z,PD_REL
|
|
0724+++8EB7~ JR C,PD_VOL
|
|
0725+++8EB7~ ADD A,E
|
|
0726+++8EB7~ JR Z,PD_EOff
|
|
0727+++8EB7~ JR C,PD_SorE
|
|
0728+++8EB7~ ADD A,96
|
|
0729+++8EB7~ JR C,PD_NOTE
|
|
0730+++8EB7~ ADD A,E
|
|
0731+++8EB7~ JR C,PD_ORN
|
|
0732+++8EB7~ ADD A,D
|
|
0733+++8EB7~ JR C,PD_NOIS
|
|
0734+++8EB7~ ADD A,E
|
|
0735+++8EB7~ JR C,PD_ESAM
|
|
0736+++8EB7~ ADD A,A
|
|
0737+++8EB7~ LD E,A
|
|
0738+++8EB7~ LD HL,(SPCCOMS+#FF20-#2000)&65535
|
|
0739+++8EB7~ ADD HL,DE
|
|
0740+++8EB7~ LD E,(HL)
|
|
0741+++8EB7~ INC HL
|
|
0742+++8EB7~ LD D,(HL)
|
|
0743+++8EB7~ PUSH DE
|
|
0744+++8EB7~ JR PD_LOOP
|
|
0745+++8EB7~ 0746+++8EB7~ PD_NOIS LD (IY-100+VRS.Ns_Base),A
|
|
0747+++8EB7~ JR PD_LP2
|
|
0748+++8EB7~ 0749+++8EB7~ PD_REL RES 0,(IX-12+CHP.Flags)
|
|
0750+++8EB7~ JR PD_RES
|
|
0751+++8EB7~ 0752+++8EB7~ PD_NOTE LD (IX-12+CHP.Note),A
|
|
0753+++8EB7~ SET 0,(IX-12+CHP.Flags)
|
|
0754+++8EB7~ XOR A
|
|
0755+++8EB7~ 0756+++8EB7~ PD_RES LD (PDSP_+1),SP
|
|
0757+++8EB7~ LD SP,IX
|
|
0758+++8EB7~ LD H,A
|
|
0759+++8EB7~ LD L,A
|
|
0760+++8EB7~ PUSH HL
|
|
0761+++8EB7~ PUSH HL
|
|
0762+++8EB7~ PUSH HL
|
|
0763+++8EB7~ PUSH HL
|
|
0764+++8EB7~ PUSH HL
|
|
0765+++8EB7~ PUSH HL
|
|
0766+++8EB7~ PDSP_ LD SP,#3131
|
|
0767+++8EB7~ 0768+++8EB7~ PD_FIN LD A,(IX-12+CHP.NNtSkp)
|
|
0769+++8EB7~ LD (IX-12+CHP.NtSkCn),A
|
|
0770+++8EB7~ RET
|
|
0771+++8EB7~ 0772+++8EB7~ C_PORTM LD A,(BC)
|
|
0773+++8EB7~ INC BC
|
|
0774+++8EB7~ ;SKIP PRECALCULATED TONE DELTA (BECAUSE
|
|
0775+++8EB7~ ;CANNOT BE RIGHT AFTER PT3 COMPILATION)
|
|
0776+++8EB7~ INC BC
|
|
0777+++8EB7~ INC BC
|
|
0778+++8EB7~ EX AF,AF'
|
|
0779+++8EB7~ LD A,(BC) ;SIGNED TONE STEP
|
|
0780+++8EB7~ INC BC
|
|
0781+++8EB7~ LD (LoStep),A
|
|
0782+++8EB7~ LD A,(BC)
|
|
0783+++8EB7~ INC BC
|
|
0784+++8EB7~ AND A
|
|
0785+++8EB7~ EX AF,AF'
|
|
0786+++8EB7~ LD L,(IX-12+CHP.CrTnSl)
|
|
0787+++8EB7~ LD H,(IX-12+CHP.CrTnSl+1)
|
|
0788+++8EB7~ 0789+++8EB7~ ;Set portamento variables
|
|
0790+++8EB7~ ;A - Delay; A' - Hi(Step); ZF' - (A'=0); HL - CrTnSl
|
|
0791+++8EB7~ 0792+++8EB7~ SETPORT RES 2,(IX-12+CHP.Flags)
|
|
0793+++8EB7~ LD (IX-12+CHP.TnSlDl),A
|
|
0794+++8EB7~ LD (IX-12+CHP.TSlCnt),A
|
|
0795+++8EB7~ PUSH HL
|
|
0796+++8EB7~ LD DE,NT_
|
|
0797+++8EB7~ LD A,(IX-12+CHP.Note)
|
|
0798+++8EB7~ LD (IX-12+CHP.SlToNt),A
|
|
0799+++8EB7~ ADD A,A
|
|
0800+++8EB7~ LD L,A
|
|
0801+++8EB7~ LD H,0
|
|
0802+++8EB7~ ADD HL,DE
|
|
0803+++8EB7~ LD A,(HL)
|
|
0804+++8EB7~ INC HL
|
|
0805+++8EB7~ LD H,(HL)
|
|
0806+++8EB7~ LD L,A
|
|
0807+++8EB7~ PUSH HL
|
|
0808+++8EB7~ PrNote LD A,#3E
|
|
0809+++8EB7~ LD (IX-12+CHP.Note),A
|
|
0810+++8EB7~ ADD A,A
|
|
0811+++8EB7~ LD L,A
|
|
0812+++8EB7~ LD H,0
|
|
0813+++8EB7~ ADD HL,DE
|
|
0814+++8EB7~ LD E,(HL)
|
|
0815+++8EB7~ INC HL
|
|
0816+++8EB7~ LD D,(HL)
|
|
0817+++8EB7~ POP HL
|
|
0818+++8EB7~ SBC HL,DE
|
|
0819+++8EB7~ LD (IX-12+CHP.TnDelt),L
|
|
0820+++8EB7~ LD (IX-12+CHP.TnDelt+1),H
|
|
0821+++8EB7~ POP DE
|
|
0822+++8EB7~ Version EQU $+1
|
|
0823+++8EB7~ LD A,#3E
|
|
0824+++8EB7~ CP 6
|
|
0825+++8EB7~ JR C,OLDPRTM ;Old 3xxx for PT v3.5-
|
|
0826+++8EB7~ PrSlide LD DE,#1111
|
|
0827+++8EB7~ LD (IX-12+CHP.CrTnSl),E
|
|
0828+++8EB7~ LD (IX-12+CHP.CrTnSl+1),D
|
|
0829+++8EB7~ LoStep EQU $+1
|
|
0830+++8EB7~ OLDPRTM LD A,#3E
|
|
0831+++8EB7~ EX AF,AF'
|
|
0832+++8EB7~ JR Z,NOSIG
|
|
0833+++8EB7~ EX DE,HL
|
|
0834+++8EB7~ NOSIG SBC HL,DE
|
|
0835+++8EB7~ JP P,SET_STP
|
|
0836+++8EB7~ CPL
|
|
0837+++8EB7~ EX AF,AF'
|
|
0838+++8EB7~ NEG
|
|
0839+++8EB7~ EX AF,AF'
|
|
0840+++8EB7~ SET_STP LD (IX-12+CHP.TSlStp+1),A
|
|
0841+++8EB7~ EX AF,AF'
|
|
0842+++8EB7~ LD (IX-12+CHP.TSlStp),A
|
|
0843+++8EB7~ LD (IX-12+CHP.COnOff),0
|
|
0844+++8EB7~ RET
|
|
0845+++8EB7~ 0846+++8EB7~ C_GLISS SET 2,(IX-12+CHP.Flags)
|
|
0847+++8EB7~ LD A,(BC)
|
|
0848+++8EB7~ INC BC
|
|
0849+++8EB7~ LD (IX-12+CHP.TnSlDl),A
|
|
0850+++8EB7~ AND A
|
|
0851+++8EB7~ JR NZ,GL36
|
|
0852+++8EB7~ LD A,(Version) ;AlCo PT3.7+
|
|
0853+++8EB7~ CP 7
|
|
0854+++8EB7~ SBC A,A
|
|
0855+++8EB7~ INC A
|
|
0856+++8EB7~ GL36 LD (IX-12+CHP.TSlCnt),A
|
|
0857+++8EB7~ LD A,(BC)
|
|
0858+++8EB7~ INC BC
|
|
0859+++8EB7~ EX AF,AF'
|
|
0860+++8EB7~ LD A,(BC)
|
|
0861+++8EB7~ INC BC
|
|
0862+++8EB7~ JR SET_STP
|
|
0863+++8EB7~ 0864+++8EB7~ C_SMPOS LD A,(BC)
|
|
0865+++8EB7~ INC BC
|
|
0866+++8EB7~ LD (IX-12+CHP.PsInSm),A
|
|
0867+++8EB7~ RET
|
|
0868+++8EB7~ 0869+++8EB7~ C_ORPOS LD A,(BC)
|
|
0870+++8EB7~ INC BC
|
|
0871+++8EB7~ LD (IX-12+CHP.PsInOr),A
|
|
0872+++8EB7~ RET
|
|
0873+++8EB7~ 0874+++8EB7~ C_VIBRT LD A,(BC)
|
|
0875+++8EB7~ INC BC
|
|
0876+++8EB7~ LD (IX-12+CHP.OnOffD),A
|
|
0877+++8EB7~ LD (IX-12+CHP.COnOff),A
|
|
0878+++8EB7~ LD A,(BC)
|
|
0879+++8EB7~ INC BC
|
|
0880+++8EB7~ LD (IX-12+CHP.OffOnD),A
|
|
0881+++8EB7~ XOR A
|
|
0882+++8EB7~ LD (IX-12+CHP.TSlCnt),A
|
|
0883+++8EB7~ LD (IX-12+CHP.CrTnSl),A
|
|
0884+++8EB7~ LD (IX-12+CHP.CrTnSl+1),A
|
|
0885+++8EB7~ RET
|
|
0886+++8EB7~ 0887+++8EB7~ C_ENGLS LD A,(BC)
|
|
0888+++8EB7~ INC BC
|
|
0889+++8EB7~ LD (IY-100+VRS.Env_Del),A
|
|
0890+++8EB7~ LD (IY-100+VRS.CurEDel),A
|
|
0891+++8EB7~ LD A,(BC)
|
|
0892+++8EB7~ INC BC
|
|
0893+++8EB7~ LD L,A
|
|
0894+++8EB7~ LD A,(BC)
|
|
0895+++8EB7~ INC BC
|
|
0896+++8EB7~ LD H,A
|
|
0897+++8EB7~ LD (IY-100+VRS.ESldAdd),L
|
|
0898+++8EB7~ LD (IY-100+VRS.ESldAdd+1),H
|
|
0899+++8EB7~ RET
|
|
0900+++8EB7~ 0901+++8EB7~ C_DELAY LD A,(BC)
|
|
0902+++8EB7~ INC BC
|
|
0903+++8EB7~ LD (IY-100+VRS.Delay),A
|
|
0904+++8EB7~ LD HL,VARS2+VRS.ModNum ;if AlCo_TS
|
|
0905+++8EB7~ BIT 1,(HL)
|
|
0906+++8EB7~ RET Z
|
|
0907+++8EB7~ LD (VARS1+VRS.Delay),A
|
|
0908+++8EB7~ LD (VARS1+VRS.DelyCnt),A
|
|
0909+++8EB7~ LD (VARS2+VRS.Delay),A
|
|
0910+++8EB7~ RET
|
|
0911+++8EB7~
|
|
0912+++8EB7~ SETENV LD (IX-12+CHP.Env_En),E
|
|
0913+++8EB7~ LD (IY-100+VRS.AYREGS+EnvTp),A
|
|
0914+++8EB7~ LD A,(BC)
|
|
0915+++8EB7~ INC BC
|
|
0916+++8EB7~ LD H,A
|
|
0917+++8EB7~ LD A,(BC)
|
|
0918+++8EB7~ INC BC
|
|
0919+++8EB7~ LD L,A
|
|
0920+++8EB7~ CALL SETENBS
|
|
0921+++8EB7~ XOR A
|
|
0922+++8EB7~ LD (IX-12+CHP.PsInOr),A
|
|
0923+++8EB7~ LD (IY-100+VRS.CurEDel),A
|
|
0924+++8EB7~ LD H,A
|
|
0925+++8EB7~ LD L,A
|
|
0926+++8EB7~ JP SETESLD
|
|
0927+++8EB7~ 0928+++8EB7~ SETORN ADD A,A
|
|
0929+++8EB7~ LD E,A
|
|
0930+++8EB7~ LD D,0
|
|
0931+++8EB7~ LD (IX-12+CHP.PsInOr),D
|
|
0932+++8EB7~ LD L,(IY-100+VRS.OrnPtrs)
|
|
0933+++8EB7~ LD H,(IY-100+VRS.OrnPtrs+1)
|
|
0934+++8EB7~ ADD HL,DE
|
|
0935+++8EB7~ LD E,(HL)
|
|
0936+++8EB7~ INC HL
|
|
0937+++8EB7~ LD D,(HL)
|
|
0938+++8EB7~ LD L,(IY-100+VRS.MODADDR)
|
|
0939+++8EB7~ LD H,(IY-100+VRS.MODADDR+1)
|
|
0940+++8EB7~ ADD HL,DE
|
|
0941+++8EB7~ LD (IX-12+CHP.OrnPtr),L
|
|
0942+++8EB7~ LD (IX-12+CHP.OrnPtr+1),H
|
|
0943+++8EB7~ C_NOP RET
|
|
0944+++8EB7~ 0945+++8EB7~ SETSAM ADD A,A
|
|
0946+++8EB7~ LD E,A
|
|
0947+++8EB7~ LD D,0
|
|
0948+++8EB7~ LD L,(IY-100+VRS.SamPtrs);
|
|
0949+++8EB7~ LD H,(IY-100+VRS.SamPtrs+1);
|
|
0950+++8EB7~ ADD HL,DE
|
|
0951+++8EB7~ LD E,(HL)
|
|
0952+++8EB7~ INC HL
|
|
0953+++8EB7~ LD D,(HL)
|
|
0954+++8EB7~ LD L,(IY-100+VRS.MODADDR)
|
|
0955+++8EB7~ LD H,(IY-100+VRS.MODADDR+1)
|
|
0956+++8EB7~ ADD HL,DE
|
|
0957+++8EB7~ LD (IX-12+CHP.SamPtr),L
|
|
0958+++8EB7~ LD (IX-12+CHP.SamPtr+1),H
|
|
0959+++8EB7~ RET
|
|
0960+++8EB7~ 0961+++8EB7~ ;ALL 16 ADDRESSES TO PROTECT FROM BROKEN PT3 MODULES
|
|
0962+++8EB7~ SPCCOMS DW C_NOP
|
|
0963+++8EB7~ DW C_GLISS
|
|
0964+++8EB7~ DW C_PORTM
|
|
0965+++8EB7~ DW C_SMPOS
|
|
0966+++8EB7~ DW C_ORPOS
|
|
0967+++8EB7~ DW C_VIBRT
|
|
0968+++8EB7~ DW C_NOP
|
|
0969+++8EB7~ DW C_NOP
|
|
0970+++8EB7~ DW C_ENGLS
|
|
0971+++8EB7~ DW C_DELAY
|
|
0972+++8EB7~ DW C_NOP
|
|
0973+++8EB7~ DW C_NOP
|
|
0974+++8EB7~ DW C_NOP
|
|
0975+++8EB7~ DW C_NOP
|
|
0976+++8EB7~ DW C_NOP
|
|
0977+++8EB7~ DW C_NOP
|
|
0978+++8EB7~ 0979+++8EB7~ CHREGS CALL GETIX
|
|
0980+++8EB7~ XOR A
|
|
0981+++8EB7~ LD (Ampl),A
|
|
0982+++8EB7~ BIT 0,(IX+CHP.Flags)
|
|
0983+++8EB7~ PUSH HL
|
|
0984+++8EB7~ JP Z,CH_EXIT
|
|
0985+++8EB7~ LD (CSP_+1),SP
|
|
0986+++8EB7~ LD L,(IX+CHP.OrnPtr)
|
|
0987+++8EB7~ LD H,(IX+CHP.OrnPtr+1)
|
|
0988+++8EB7~ LD SP,HL
|
|
0989+++8EB7~ POP DE
|
|
0990+++8EB7~ LD H,A
|
|
0991+++8EB7~ LD A,(IX+CHP.PsInOr)
|
|
0992+++8EB7~ LD L,A
|
|
0993+++8EB7~ ADD HL,SP
|
|
0994+++8EB7~ INC A
|
|
0995+++8EB7~ ;PT2 PT3
|
|
0996+++8EB7~ OrnCP INC A ;CP E CP D
|
|
0997+++8EB7~ JR C,CH_ORPS
|
|
0998+++8EB7~ OrnLD DB 1 ;LD A,D LD A,E
|
|
0999+++8EB7~ CH_ORPS LD (IX+CHP.PsInOr),A
|
|
1000+++8EB7~ LD A,(IX+CHP.Note)
|
|
1001+++8EB7~ ADD A,(HL)
|
|
1002+++8EB7~ JP P,CH_NTP
|
|
1003+++8EB7~ XOR A
|
|
1004+++8EB7~ CH_NTP CP 96
|
|
1005+++8EB7~ JR C,CH_NOK
|
|
1006+++8EB7~ LD A,95
|
|
1007+++8EB7~ CH_NOK ADD A,A
|
|
1008+++8EB7~ EX AF,AF'
|
|
1009+++8EB7~ LD L,(IX+CHP.SamPtr)
|
|
1010+++8EB7~ LD H,(IX+CHP.SamPtr+1)
|
|
1011+++8EB7~ LD SP,HL
|
|
1012+++8EB7~ POP DE
|
|
1013+++8EB7~ LD H,0
|
|
1014+++8EB7~ LD A,(IX+CHP.PsInSm)
|
|
1015+++8EB7~ LD B,A
|
|
1016+++8EB7~ ADD A,A
|
|
1017+++8EB7~ SamClc2 ADD A,A ;or ADD A,B for PT2
|
|
1018+++8EB7~ LD L,A
|
|
1019+++8EB7~ ADD HL,SP
|
|
1020+++8EB7~ LD SP,HL
|
|
1021+++8EB7~ LD A,B
|
|
1022+++8EB7~ INC A
|
|
1023+++8EB7~ ;PT2 PT3
|
|
1024+++8EB7~ SamCP INC A ;CP E CP D
|
|
1025+++8EB7~ JR C,CH_SMPS
|
|
1026+++8EB7~ SamLD DB 1 ;LD A,D LD A,E
|
|
1027+++8EB7~ CH_SMPS LD (IX+CHP.PsInSm),A
|
|
1028+++8EB7~ POP BC
|
|
1029+++8EB7~ POP HL
|
|
1030+++8EB7~ 1031+++8EB7~ ;Convert PT2 sample to PT3
|
|
1032+++8EB7~ ;PT2 PT3
|
|
1033+++8EB7~ SamCnv POP HL ;BIT 2,C JR e_
|
|
1034+++8EB7~ POP HL
|
|
1035+++8EB7~ LD H,B
|
|
1036+++8EB7~ JR NZ,$+8
|
|
1037+++8EB7~ EX DE,HL
|
|
1038+++8EB7~ AND A
|
|
1039+++8EB7~ SBC HL,HL
|
|
1040+++8EB7~ SBC HL,DE
|
|
1041+++8EB7~ LD D,C
|
|
1042+++8EB7~ RR C
|
|
1043+++8EB7~ SBC A,A
|
|
1044+++8EB7~ CPL
|
|
1045+++8EB7~ AND #3E
|
|
1046+++8EB7~ RR C
|
|
1047+++8EB7~ RR B
|
|
1048+++8EB7~ AND C
|
|
1049+++8EB7~ LD C,A
|
|
1050+++8EB7~ LD A,B
|
|
1051+++8EB7~ RRA
|
|
1052+++8EB7~ RRA
|
|
1053+++8EB7~ RR D
|
|
1054+++8EB7~ RRA
|
|
1055+++8EB7~ AND #9F
|
|
1056+++8EB7~ LD B,A
|
|
1057+++8EB7~ 1058+++8EB7~ e_ LD E,(IX+CHP.TnAcc)
|
|
1059+++8EB7~ LD D,(IX+CHP.TnAcc+1)
|
|
1060+++8EB7~ ADD HL,DE
|
|
1061+++8EB7~ BIT 6,B
|
|
1062+++8EB7~ JR Z,CH_NOAC
|
|
1063+++8EB7~ LD (IX+CHP.TnAcc),L
|
|
1064+++8EB7~ LD (IX+CHP.TnAcc+1),H
|
|
1065+++8EB7~ CH_NOAC EX DE,HL
|
|
1066+++8EB7~ EX AF,AF'
|
|
1067+++8EB7~ ADD A,NT_&255
|
|
1068+++8EB7~ LD L,A
|
|
1069+++8EB7~ ADC A,NT_/256
|
|
1070+++8EB7~ SUB L
|
|
1071+++8EB7~ LD H,A
|
|
1072+++8EB7~ LD SP,HL
|
|
1073+++8EB7~ POP HL
|
|
1074+++8EB7~ ADD HL,DE
|
|
1075+++8EB7~ LD E,(IX+CHP.CrTnSl)
|
|
1076+++8EB7~ LD D,(IX+CHP.CrTnSl+1)
|
|
1077+++8EB7~ ADD HL,DE
|
|
1078+++8EB7~ CSP_ LD SP,#3131
|
|
1079+++8EB7~ EX (SP),HL
|
|
1080+++8EB7~ XOR A
|
|
1081+++8EB7~ OR (IX+CHP.TSlCnt)
|
|
1082+++8EB7~ JR Z,CH_AMP
|
|
1083+++8EB7~ DEC (IX+CHP.TSlCnt)
|
|
1084+++8EB7~ JR NZ,CH_AMP
|
|
1085+++8EB7~ LD A,(IX+CHP.TnSlDl)
|
|
1086+++8EB7~ LD (IX+CHP.TSlCnt),A
|
|
1087+++8EB7~ LD L,(IX+CHP.TSlStp)
|
|
1088+++8EB7~ LD H,(IX+CHP.TSlStp+1)
|
|
1089+++8EB7~ LD A,H
|
|
1090+++8EB7~ ADD HL,DE
|
|
1091+++8EB7~ LD (IX+CHP.CrTnSl),L
|
|
1092+++8EB7~ LD (IX+CHP.CrTnSl+1),H
|
|
1093+++8EB7~ BIT 2,(IX+CHP.Flags)
|
|
1094+++8EB7~ JR NZ,CH_AMP
|
|
1095+++8EB7~ LD E,(IX+CHP.TnDelt)
|
|
1096+++8EB7~ LD D,(IX+CHP.TnDelt+1)
|
|
1097+++8EB7~ AND A
|
|
1098+++8EB7~ JR Z,CH_STPP
|
|
1099+++8EB7~ EX DE,HL
|
|
1100+++8EB7~ CH_STPP SBC HL,DE
|
|
1101+++8EB7~ JP M,CH_AMP
|
|
1102+++8EB7~ LD A,(IX+CHP.SlToNt)
|
|
1103+++8EB7~ LD (IX+CHP.Note),A
|
|
1104+++8EB7~ XOR A
|
|
1105+++8EB7~ LD (IX+CHP.TSlCnt),A
|
|
1106+++8EB7~ LD (IX+CHP.CrTnSl),A
|
|
1107+++8EB7~ LD (IX+CHP.CrTnSl+1),A
|
|
1108+++8EB7~ CH_AMP LD A,(IX+CHP.CrAmSl)
|
|
1109+++8EB7~ BIT 7,C
|
|
1110+++8EB7~ JR Z,CH_NOAM
|
|
1111+++8EB7~ BIT 6,C
|
|
1112+++8EB7~ JR Z,CH_AMIN
|
|
1113+++8EB7~ CP 15
|
|
1114+++8EB7~ JR Z,CH_NOAM
|
|
1115+++8EB7~ INC A
|
|
1116+++8EB7~ JR CH_SVAM
|
|
1117+++8EB7~ CH_AMIN CP -15
|
|
1118+++8EB7~ JR Z,CH_NOAM
|
|
1119+++8EB7~ DEC A
|
|
1120+++8EB7~ CH_SVAM LD (IX+CHP.CrAmSl),A
|
|
1121+++8EB7~ CH_NOAM LD L,A
|
|
1122+++8EB7~ LD A,B
|
|
1123+++8EB7~ AND 15
|
|
1124+++8EB7~ ADD A,L
|
|
1125+++8EB7~ JP P,CH_APOS
|
|
1126+++8EB7~ XOR A
|
|
1127+++8EB7~ CH_APOS CP 16
|
|
1128+++8EB7~ JR C,CH_VOL
|
|
1129+++8EB7~ LD A,15
|
|
1130+++8EB7~ CH_VOL OR (IX+CHP.Volume)
|
|
1131+++8EB7~ ADD A,VT_&255
|
|
1132+++8EB7~ LD L,A
|
|
1133+++8EB7~ ADC A,VT_/256
|
|
1134+++8EB7~ SUB L
|
|
1135+++8EB7~ LD H,A
|
|
1136+++8EB7~ LD A,(HL)
|
|
1137+++8EB7~ CH_ENV BIT 0,C
|
|
1138+++8EB7~ JR NZ,CH_NOEN
|
|
1139+++8EB7~ OR (IX+CHP.Env_En)
|
|
1140+++8EB7~ CH_NOEN LD (Ampl),A
|
|
1141+++8EB7~ BIT 7,B
|
|
1142+++8EB7~ LD A,C
|
|
1143+++8EB7~ JR Z,NO_ENSL
|
|
1144+++8EB7~ RLA
|
|
1145+++8EB7~ RLA
|
|
1146+++8EB7~ SRA A
|
|
1147+++8EB7~ SRA A
|
|
1148+++8EB7~ SRA A
|
|
1149+++8EB7~ ADD A,(IX+CHP.CrEnSl) ;SEE COMMENT BELOW
|
|
1150+++8EB7~ BIT 5,B
|
|
1151+++8EB7~ JR Z,NO_ENAC
|
|
1152+++8EB7~ LD (IX+CHP.CrEnSl),A
|
|
1153+++8EB7~ NO_ENAC ADD A,(IY-100+VRS.AddToEn) ;BUG IN PT3 - NEED WORD HERE
|
|
1154+++8EB7~ LD (IY-100+VRS.AddToEn),A
|
|
1155+++8EB7~ JR CH_MIX
|
|
1156+++8EB7~ NO_ENSL RRA
|
|
1157+++8EB7~ ADD A,(IX+CHP.CrNsSl)
|
|
1158+++8EB7~ LD (IY-100+VRS.AddToNs),A
|
|
1159+++8EB7~ BIT 5,B
|
|
1160+++8EB7~ JR Z,CH_MIX
|
|
1161+++8EB7~ LD (IX+CHP.CrNsSl),A
|
|
1162+++8EB7~ CH_MIX LD A,B
|
|
1163+++8EB7~ RRA
|
|
1164+++8EB7~ AND #48
|
|
1165+++8EB7~ CH_EXIT OR (IY-100+VRS.AYREGS+Mixer)
|
|
1166+++8EB7~ RRCA
|
|
1167+++8EB7~ LD (IY-100+VRS.AYREGS+Mixer),A
|
|
1168+++8EB7~ POP HL
|
|
1169+++8EB7~ XOR A
|
|
1170+++8EB7~ OR (IX+CHP.COnOff)
|
|
1171+++8EB7~ RET Z
|
|
1172+++8EB7~ DEC (IX+CHP.COnOff)
|
|
1173+++8EB7~ RET NZ
|
|
1174+++8EB7~ XOR (IX+CHP.Flags)
|
|
1175+++8EB7~ LD (IX+CHP.Flags),A
|
|
1176+++8EB7~ RRA
|
|
1177+++8EB7~ LD A,(IX+CHP.OnOffD)
|
|
1178+++8EB7~ JR C,CH_ONDL
|
|
1179+++8EB7~ LD A,(IX+CHP.OffOnD)
|
|
1180+++8EB7~ CH_ONDL LD (IX+CHP.COnOff),A
|
|
1181+++8EB7~ RET
|
|
1182+++8EB7~ 1183+++8EB7~ PLAY_ XOR A
|
|
1184+++8EB7~ LD (IY-100+VRS.AddToEn),A
|
|
1185+++8EB7~ LD (IY-100+VRS.AYREGS+Mixer),A
|
|
1186+++8EB7~ DEC A
|
|
1187+++8EB7~ LD (IY-100+VRS.AYREGS+EnvTp),A
|
|
1188+++8EB7~ DEC (IY-100+VRS.DelyCnt)
|
|
1189+++8EB7~ JP NZ,PL2
|
|
1190+++8EB7~ DEC (IY-100+VRS.ChanA+CHP.NtSkCn)
|
|
1191+++8EB7~ JR NZ,PL1B
|
|
1192+++8EB7~ LD C,(IY-100+VRS.AdInPtA)
|
|
1193+++8EB7~ LD B,(IY-100+VRS.AdInPtA+1)
|
|
1194+++8EB7~ LD A,(BC)
|
|
1195+++8EB7~ AND A
|
|
1196+++8EB7~ JR NZ,PL1A
|
|
1197+++8EB7~ LD D,A
|
|
1198+++8EB7~ LD (IY-100+VRS.Ns_Base),A
|
|
1199+++8EB7~ LD L,(IY-100+VRS.CrPsPtr)
|
|
1200+++8EB7~ LD H,(IY-100+VRS.CrPsPtr+1)
|
|
1201+++8EB7~ INC HL
|
|
1202+++8EB7~ LD A,(HL)
|
|
1203+++8EB7~ INC A
|
|
1204+++8EB7~ JR NZ,PLNLP
|
|
1205+++8EB7~ 1206+++8EB7~ IF LoopChecker
|
|
1207+++8EB7~ CALL CHECKLP
|
|
1208+++8EB7~ ENDIF
|
|
1209+++8EB7~ 1210+++8EB7~ LD L,(IY-100+VRS.LPosPtr)
|
|
1211+++8EB7~ LD H,(IY-100+VRS.LPosPtr+1)
|
|
1212+++8EB7~ LD A,(HL)
|
|
1213+++8EB7~ INC A
|
|
1214+++8EB7~ PLNLP CALL SETCPPT
|
|
1215+++8EB7~ DEC A
|
|
1216+++8EB7~ BIT 1,(IY-100+VRS.ModNum)
|
|
1217+++8EB7~ JR Z,NoAlCo
|
|
1218+++8EB7~ TSSub EQU $+1
|
|
1219+++8EB7~ SUB #D6
|
|
1220+++8EB7~ CPL
|
|
1221+++8EB7~ NoAlCo
|
|
1222+++8EB7~ ;PT2 PT3
|
|
1223+++8EB7~ PsCalc DEC A ;ADD A,A NOP
|
|
1224+++8EB7~ DEC A ;ADD A,(HL) NOP
|
|
1225+++8EB7~ ADD A,A
|
|
1226+++8EB7~ LD E,A
|
|
1227+++8EB7~ RL D
|
|
1228+++8EB7~ 1229+++8EB7~ IF CurPosCounter
|
|
1230+++8EB7~ LD A,L
|
|
1231+++8EB7~ SUB (IY-100+VRS.PosSub)
|
|
1232+++8EB7~ LD (IY-100+VRS.CurPos),A
|
|
1233+++8EB7~ ENDIF
|
|
1234+++8EB7~ 1235+++8EB7~ LD L,(IY-100+VRS.PatsPtr)
|
|
1236+++8EB7~ LD H,(IY-100+VRS.PatsPtr+1)
|
|
1237+++8EB7~ ADD HL,DE
|
|
1238+++8EB7~ LD E,(IY-100+VRS.MODADDR)
|
|
1239+++8EB7~ LD D,(IY-100+VRS.MODADDR+1)
|
|
1240+++8EB7~ LD (PSP_+1),SP
|
|
1241+++8EB7~ LD SP,HL
|
|
1242+++8EB7~ POP HL
|
|
1243+++8EB7~ ADD HL,DE
|
|
1244+++8EB7~ LD B,H
|
|
1245+++8EB7~ LD C,L
|
|
1246+++8EB7~ POP HL
|
|
1247+++8EB7~ ADD HL,DE
|
|
1248+++8EB7~ LD (IY-100+VRS.AdInPtB),L
|
|
1249+++8EB7~ LD (IY-100+VRS.AdInPtB+1),H
|
|
1250+++8EB7~ POP HL
|
|
1251+++8EB7~ ADD HL,DE
|
|
1252+++8EB7~ LD (IY-100+VRS.AdInPtC),L
|
|
1253+++8EB7~ LD (IY-100+VRS.AdInPtC+1),H
|
|
1254+++8EB7~ PSP_ LD SP,#3131
|
|
1255+++8EB7~ PL1A LD DE,VRS.ChanA+12-100
|
|
1256+++8EB7~ CALL PTDECOD
|
|
1257+++8EB7~ LD (IY-100+VRS.AdInPtA),C
|
|
1258+++8EB7~ LD (IY-100+VRS.AdInPtA+1),B
|
|
1259+++8EB7~ 1260+++8EB7~ PL1B DEC (IY-100+VRS.ChanB+CHP.NtSkCn)
|
|
1261+++8EB7~ JR NZ,PL1C
|
|
1262+++8EB7~ LD DE,VRS.ChanB+12-100
|
|
1263+++8EB7~ LD C,(IY-100+VRS.AdInPtB)
|
|
1264+++8EB7~ LD B,(IY-100+VRS.AdInPtB+1)
|
|
1265+++8EB7~ CALL PTDECOD
|
|
1266+++8EB7~ LD (IY-100+VRS.AdInPtB),C
|
|
1267+++8EB7~ LD (IY-100+VRS.AdInPtB+1),B
|
|
1268+++8EB7~ 1269+++8EB7~ PL1C DEC (IY-100+VRS.ChanC+CHP.NtSkCn)
|
|
1270+++8EB7~ JR NZ,PL1D
|
|
1271+++8EB7~ LD DE,VRS.ChanC+12-100
|
|
1272+++8EB7~ LD C,(IY-100+VRS.AdInPtC)
|
|
1273+++8EB7~ LD B,(IY-100+VRS.AdInPtC+1)
|
|
1274+++8EB7~ CALL PTDECOD
|
|
1275+++8EB7~ LD (IY-100+VRS.AdInPtC),C
|
|
1276+++8EB7~ LD (IY-100+VRS.AdInPtC+1),B
|
|
1277+++8EB7~ 1278+++8EB7~ PL1D LD A,(IY-100+VRS.Delay)
|
|
1279+++8EB7~ LD (IY-100+VRS.DelyCnt),A
|
|
1280+++8EB7~ 1281+++8EB7~ PL2 LD DE,VRS.ChanA-100
|
|
1282+++8EB7~ LD L,(IY-100+VRS.AYREGS+TonA)
|
|
1283+++8EB7~ LD H,(IY-100+VRS.AYREGS+TonA+1)
|
|
1284+++8EB7~ CALL CHREGS
|
|
1285+++8EB7~ LD (IY-100+VRS.AYREGS+TonA),L
|
|
1286+++8EB7~ LD (IY-100+VRS.AYREGS+TonA+1),H
|
|
1287+++8EB7~ Ampl EQU $+1
|
|
1288+++8EB7~ LD A,#3E
|
|
1289+++8EB7~ LD (IY-100+VRS.AYREGS+AmplA),A
|
|
1290+++8EB7~ LD DE,VRS.ChanB-100
|
|
1291+++8EB7~ LD L,(IY-100+VRS.AYREGS+TonB)
|
|
1292+++8EB7~ LD H,(IY-100+VRS.AYREGS+TonB+1)
|
|
1293+++8EB7~ CALL CHREGS
|
|
1294+++8EB7~ LD (IY-100+VRS.AYREGS+TonB),L
|
|
1295+++8EB7~ LD (IY-100+VRS.AYREGS+TonB+1),H
|
|
1296+++8EB7~ LD A,(Ampl)
|
|
1297+++8EB7~ LD (IY-100+VRS.AYREGS+AmplB),A
|
|
1298+++8EB7~ LD DE,VRS.ChanC-100
|
|
1299+++8EB7~ LD L,(IY-100+VRS.AYREGS+TonC)
|
|
1300+++8EB7~ LD H,(IY-100+VRS.AYREGS+TonC+1)
|
|
1301+++8EB7~ CALL CHREGS
|
|
1302+++8EB7~ LD (IY-100+VRS.AYREGS+TonC),L
|
|
1303+++8EB7~ LD (IY-100+VRS.AYREGS+TonC+1),H
|
|
1304+++8EB7~ LD A,(Ampl)
|
|
1305+++8EB7~ LD (IY-100+VRS.AYREGS+AmplC),A
|
|
1306+++8EB7~ 1307+++8EB7~ LD A,(IY-100+VRS.Ns_Base)
|
|
1308+++8EB7~ ADD (IY-100+VRS.AddToNs)
|
|
1309+++8EB7~ LD (IY-100+VRS.AYREGS+Noise),A
|
|
1310+++8EB7~ 1311+++8EB7~ LD A,(IY-100+VRS.AddToEn)
|
|
1312+++8EB7~ LD E,A
|
|
1313+++8EB7~ ADD A,A
|
|
1314+++8EB7~ SBC A,A
|
|
1315+++8EB7~ LD D,A
|
|
1316+++8EB7~ LD L,(IY-100+VRS.EnvBase)
|
|
1317+++8EB7~ LD H,(IY-100+VRS.EnvBase+1)
|
|
1318+++8EB7~ ADD HL,DE
|
|
1319+++8EB7~ LD E,(IY-100+VRS.CurESld)
|
|
1320+++8EB7~ LD D,(IY-100+VRS.CurESld+1)
|
|
1321+++8EB7~ ADD HL,DE
|
|
1322+++8EB7~ LD (IY-100+VRS.AYREGS+Env),L
|
|
1323+++8EB7~ LD (IY-100+VRS.AYREGS+Env+1),H
|
|
1324+++8EB7~ 1325+++8EB7~ XOR A
|
|
1326+++8EB7~ OR (IY-100+VRS.CurEDel)
|
|
1327+++8EB7~ RET Z
|
|
1328+++8EB7~ DEC (IY-100+VRS.CurEDel)
|
|
1329+++8EB7~ RET NZ
|
|
1330+++8EB7~ LD A,(IY-100+VRS.Env_Del)
|
|
1331+++8EB7~ LD (IY-100+VRS.CurEDel),A
|
|
1332+++8EB7~ LD L,(IY-100+VRS.ESldAdd)
|
|
1333+++8EB7~ LD H,(IY-100+VRS.ESldAdd+1)
|
|
1334+++8EB7~ ADD HL,DE
|
|
1335+++8EB7~ JP SETESLD
|
|
1336+++8EB7~ 1337+++8EB7~ PLAY LD IY,VARS1+100
|
|
1338+++8EB7~ CALL PLAY_
|
|
1339+++8EB7~ LD A,(is_ts)
|
|
1340+++8EB7~ AND A
|
|
1341+++8EB7~ JR Z,PL_nts
|
|
1342+++8EB7~ LD IY,VARS2+100
|
|
1343+++8EB7~ CALL PLAY_
|
|
1344+++8EB7~ PL_nts
|
|
1345+++8EB7~ IF Basic
|
|
1346+++8EB7~ LD IY,#5C3A
|
|
1347+++8EB7~ ENDIF
|
|
1348+++8EB7~ 1349+++8EB7~ ROUT LD BC,#FFFD
|
|
1350+++8EB7~ LD A,(is_ts)
|
|
1351+++8EB7~ AND A
|
|
1352+++8EB7~ IFDEF ONtfm
|
|
1353+++8EB7~ LD L,#F9
|
|
1354+++8EB7~ OUT (C),L
|
|
1355+++8EB7~ ELSE
|
|
1356+++8EB7~ JR Z,r_nts ;keep old standard
|
|
1357+++8EB7~ OUT (C),B
|
|
1358+++8EB7~ ENDIF
|
|
1359+++8EB7~ r_nts EX AF,AF'
|
|
1360+++8EB7~ 1361+++8EB7~ IF ACBBAC
|
|
1362+++8EB7~ LD IX,VARS1+VRS.AYREGS
|
|
1363+++8EB7~ ELSE
|
|
1364+++8EB7~ LD HL,VARS1+VRS.AYREGS
|
|
1365+++8EB7~ ENDIF
|
|
1366+++8EB7~ 1367+++8EB7~ CALL ROUT_
|
|
1368+++8EB7~ EX AF,AF'
|
|
1369+++8EB7~ RET Z
|
|
1370+++8EB7~ LD B,D
|
|
1371+++8EB7~ 1372+++8EB7~ IFDEF ONtfm
|
|
1373+++8EB7~ LD A,#F8
|
|
1374+++8EB7~ ELSE
|
|
1375+++8EB7~ CPL
|
|
1376+++8EB7~ ENDIF
|
|
1377+++8EB7~ OUT (C),A
|
|
1378+++8EB7~ 1379+++8EB7~ IF ACBBAC
|
|
1380+++8EB7~ LD IX,VARS2+VRS.AYREGS
|
|
1381+++8EB7~ ELSE
|
|
1382+++8EB7~ LD HL,VARS2+VRS.AYREGS
|
|
1383+++8EB7~ ENDIF
|
|
1384+++8EB7~ 1385+++8EB7~ ROUT_
|
|
1386+++8EB7~ IF ACBBAC
|
|
1387+++8EB7~ LD A,(SETUP)
|
|
1388+++8EB7~ AND 12
|
|
1389+++8EB7~ JR Z,ABC
|
|
1390+++8EB7~ ADD A,CHTABLE
|
|
1391+++8EB7~ LD E,A
|
|
1392+++8EB7~ ADC A,CHTABLE/256
|
|
1393+++8EB7~ SUB E
|
|
1394+++8EB7~ LD D,A
|
|
1395+++8EB7~ LD B,0
|
|
1396+++8EB7~ PUSH IX
|
|
1397+++8EB7~ POP HL
|
|
1398+++8EB7~ LD A,(DE)
|
|
1399+++8EB7~ INC DE
|
|
1400+++8EB7~ LD C,A
|
|
1401+++8EB7~ ADD HL,BC
|
|
1402+++8EB7~ LD A,(IX+TonB)
|
|
1403+++8EB7~ LD C,(HL)
|
|
1404+++8EB7~ LD (IX+TonB),C
|
|
1405+++8EB7~ LD (HL),A
|
|
1406+++8EB7~ INC HL
|
|
1407+++8EB7~ LD A,(IX+TonB+1)
|
|
1408+++8EB7~ LD C,(HL)
|
|
1409+++8EB7~ LD (IX+TonB+1),C
|
|
1410+++8EB7~ LD (HL),A
|
|
1411+++8EB7~ LD A,(DE)
|
|
1412+++8EB7~ INC DE
|
|
1413+++8EB7~ LD C,A
|
|
1414+++8EB7~ ADD HL,BC
|
|
1415+++8EB7~ LD A,(IX+AmplB)
|
|
1416+++8EB7~ LD C,(HL)
|
|
1417+++8EB7~ LD (IX+AmplB),C
|
|
1418+++8EB7~ LD (HL),A
|
|
1419+++8EB7~ LD A,(DE)
|
|
1420+++8EB7~ INC DE
|
|
1421+++8EB7~ LD (RxCA1),A
|
|
1422+++8EB7~ XOR 8
|
|
1423+++8EB7~ LD (RxCA2),A
|
|
1424+++8EB7~ LD A,(DE)
|
|
1425+++8EB7~ AND (IX+Mixer)
|
|
1426+++8EB7~ LD E,A
|
|
1427+++8EB7~ LD A,(IX+Mixer)
|
|
1428+++8EB7~ RxCA1 DB #E6
|
|
1429+++8EB7~ AND %010010
|
|
1430+++8EB7~ OR E
|
|
1431+++8EB7~ LD E,A
|
|
1432+++8EB7~ LD A,(IX+Mixer)
|
|
1433+++8EB7~ AND %010010
|
|
1434+++8EB7~ RxCA2 OR E
|
|
1435+++8EB7~ OR E
|
|
1436+++8EB7~ LD (IX+Mixer),A
|
|
1437+++8EB7~ ABC
|
|
1438+++8EB7~ ENDIF
|
|
1439+++8EB7~ 1440+++8EB7~ XOR A
|
|
1441+++8EB7~ LD DE,#FFBF
|
|
1442+++8EB7~ 1443+++8EB7~ IF ACBBAC
|
|
1444+++8EB7~ LD BC,#FFFD
|
|
1445+++8EB7~ PUSH IX
|
|
1446+++8EB7~ POP HL
|
|
1447+++8EB7~ ENDIF
|
|
1448+++8EB7~ 1449+++8EB7~ LOUT
|
|
1450+++8EB7~ IFDEF ONtfm
|
|
1451+++8EB7~ INF
|
|
1452+++8EB7~ JP M,$-2
|
|
1453+++8EB7~ ENDIF
|
|
1454+++8EB7~ OUT (C),A
|
|
1455+++8EB7~ IFDEF ONtfm
|
|
1456+++8EB7~ INF
|
|
1457+++8EB7~ JP M,$-2
|
|
1458+++8EB7~ ENDIF
|
|
1459+++8EB7~ LD B,E
|
|
1460+++8EB7~ OUTI
|
|
1461+++8EB7~ LD B,D
|
|
1462+++8EB7~ INC A
|
|
1463+++8EB7~ CP 13
|
|
1464+++8EB7~ JR NZ,LOUT
|
|
1465+++8EB7~ IFDEF ONtfm
|
|
1466+++8EB7~ INF
|
|
1467+++8EB7~ JP M,$-2
|
|
1468+++8EB7~ ENDIF
|
|
1469+++8EB7~ OUT (C),A
|
|
1470+++8EB7~ LD A,(HL)
|
|
1471+++8EB7~ AND A
|
|
1472+++8EB7~ RET M
|
|
1473+++8EB7~ IFDEF ONtfm
|
|
1474+++8EB7~ INF
|
|
1475+++8EB7~ JP M,$-2
|
|
1476+++8EB7~ ENDIF
|
|
1477+++8EB7~ LD B,E
|
|
1478+++8EB7~ OUT (C),A
|
|
1479+++8EB7~ RET
|
|
1480+++8EB7~ 1481+++8EB7~ IF ACBBAC
|
|
1482+++8EB7~ CHTABLE EQU $-4
|
|
1483+++8EB7~ DB 4,5,15,%001001,0,7,7,%100100
|
|
1484+++8EB7~ ENDIF
|
|
1485+++8EB7~ 1486+++8EB7~ NT_DATA DB (T_NEW_0-T1_)*2
|
|
1487+++8EB7~ DB TCNEW_0-T_
|
|
1488+++8EB7~ DB (T_OLD_0-T1_)*2+1
|
|
1489+++8EB7~ DB TCOLD_0-T_
|
|
1490+++8EB7~ DB (T_NEW_1-T1_)*2+1
|
|
1491+++8EB7~ DB TCNEW_1-T_
|
|
1492+++8EB7~ DB (T_OLD_1-T1_)*2+1
|
|
1493+++8EB7~ DB TCOLD_1-T_
|
|
1494+++8EB7~ DB (T_NEW_2-T1_)*2
|
|
1495+++8EB7~ DB TCNEW_2-T_
|
|
1496+++8EB7~ DB (T_OLD_2-T1_)*2
|
|
1497+++8EB7~ DB TCOLD_2-T_
|
|
1498+++8EB7~ DB (T_NEW_3-T1_)*2
|
|
1499+++8EB7~ DB TCNEW_3-T_
|
|
1500+++8EB7~ DB (T_OLD_3-T1_)*2
|
|
1501+++8EB7~ DB TCOLD_3-T_
|
|
1502+++8EB7~ 1503+++8EB7~ T_
|
|
1504+++8EB7~ 1505+++8EB7~ TCOLD_0 DB #00+1,#04+1,#08+1,#0A+1,#0C+1,#0E+1,#12+1,#14+1
|
|
1506+++8EB7~ DB #18+1,#24+1,#3C+1,0
|
|
1507+++8EB7~ TCOLD_1 DB #5C+1,0
|
|
1508+++8EB7~ TCOLD_2 DB #30+1,#36+1,#4C+1,#52+1,#5E+1,#70+1,#82,#8C,#9C
|
|
1509+++8EB7~ DB #9E,#A0,#A6,#A8,#AA,#AC,#AE,#AE,0
|
|
1510+++8EB7~ TCNEW_3 DB #56+1
|
|
1511+++8EB7~ TCOLD_3 DB #1E+1,#22+1,#24+1,#28+1,#2C+1,#2E+1,#32+1,#BE+1,0
|
|
1512+++8EB7~ TCNEW_0 DB #1C+1,#20+1,#22+1,#26+1,#2A+1,#2C+1,#30+1,#54+1
|
|
1513+++8EB7~ DB #BC+1,#BE+1,0
|
|
1514+++8EB7~ TCNEW_1 EQU TCOLD_1
|
|
1515+++8EB7~ TCNEW_2 DB #1A+1,#20+1,#24+1,#28+1,#2A+1,#3A+1,#4C+1,#5E+1
|
|
1516+++8EB7~ DB #BA+1,#BC+1,#BE+1,0
|
|
1517+++8EB7~ 1518+++8EB7~ PT3EMPTYORN EQU $-1
|
|
1519+++8EB7~ DB 1,0
|
|
1520+++8EB7~ 1521+++8EB7~ ;first 12 values of tone tables (packed)
|
|
1522+++8EB7~ 1523+++8EB7~ T_PACK DB #06EC*2/256,#06EC*2&255
|
|
1524+++8EB7~ DB #0755-#06EC
|
|
1525+++8EB7~ DB #07C5-#0755
|
|
1526+++8EB7~ DB #083B-#07C5
|
|
1527+++8EB7~ DB #08B8-#083B
|
|
1528+++8EB7~ DB #093D-#08B8
|
|
1529+++8EB7~ DB #09CA-#093D
|
|
1530+++8EB7~ DB #0A5F-#09CA
|
|
1531+++8EB7~ DB #0AFC-#0A5F
|
|
1532+++8EB7~ DB #0BA4-#0AFC
|
|
1533+++8EB7~ DB #0C55-#0BA4
|
|
1534+++8EB7~ DB #0D10-#0C55
|
|
1535+++8EB7~ DB #066D*2/256,#066D*2&255
|
|
1536+++8EB7~ DB #06CF-#066D
|
|
1537+++8EB7~ DB #0737-#06CF
|
|
1538+++8EB7~ DB #07A4-#0737
|
|
1539+++8EB7~ DB #0819-#07A4
|
|
1540+++8EB7~ DB #0894-#0819
|
|
1541+++8EB7~ DB #0917-#0894
|
|
1542+++8EB7~ DB #09A1-#0917
|
|
1543+++8EB7~ DB #0A33-#09A1
|
|
1544+++8EB7~ DB #0ACF-#0A33
|
|
1545+++8EB7~ DB #0B73-#0ACF
|
|
1546+++8EB7~ DB #0C22-#0B73
|
|
1547+++8EB7~ DB #0CDA-#0C22
|
|
1548+++8EB7~ DB #0704*2/256,#0704*2&255
|
|
1549+++8EB7~ DB #076E-#0704
|
|
1550+++8EB7~ DB #07E0-#076E
|
|
1551+++8EB7~ DB #0858-#07E0
|
|
1552+++8EB7~ DB #08D6-#0858
|
|
1553+++8EB7~ DB #095C-#08D6
|
|
1554+++8EB7~ DB #09EC-#095C
|
|
1555+++8EB7~ DB #0A82-#09EC
|
|
1556+++8EB7~ DB #0B22-#0A82
|
|
1557+++8EB7~ DB #0BCC-#0B22
|
|
1558+++8EB7~ DB #0C80-#0BCC
|
|
1559+++8EB7~ DB #0D3E-#0C80
|
|
1560+++8EB7~ DB #07E0*2/256,#07E0*2&255
|
|
1561+++8EB7~ DB #0858-#07E0
|
|
1562+++8EB7~ DB #08E0-#0858
|
|
1563+++8EB7~ DB #0960-#08E0
|
|
1564+++8EB7~ DB #09F0-#0960
|
|
1565+++8EB7~ DB #0A88-#09F0
|
|
1566+++8EB7~ DB #0B28-#0A88
|
|
1567+++8EB7~ DB #0BD8-#0B28
|
|
1568+++8EB7~ DB #0C80-#0BD8
|
|
1569+++8EB7~ DB #0D60-#0C80
|
|
1570+++8EB7~ DB #0E10-#0D60
|
|
1571+++8EB7~ DB #0EF8-#0E10
|
|
1572+++8EB7~ 1573+++8EB7~ ;vars from here can be stripped
|
|
1574+++8EB7~ ;you can move VARS to any other address
|
|
1575+++8EB7~ 1576+++8EB7~ VARS
|
|
1577+++8EB7~ 1578+++8EB7~ is_ts DB 0
|
|
1579+++8EB7~ 1580+++8EB7~ ;ChannelsVars
|
|
1581+++8EB7~ STRUCT CHP
|
|
1582+++8EB7~ ;reset group
|
|
1583+++8EB7~ PsInOr DB 0
|
|
1584+++8EB7~ PsInSm DB 0
|
|
1585+++8EB7~ CrAmSl DB 0
|
|
1586+++8EB7~ CrNsSl DB 0
|
|
1587+++8EB7~ CrEnSl DB 0
|
|
1588+++8EB7~ TSlCnt DB 0
|
|
1589+++8EB7~ CrTnSl DW 0
|
|
1590+++8EB7~ TnAcc DW 0
|
|
1591+++8EB7~ COnOff DB 0
|
|
1592+++8EB7~ ;reset group
|
|
1593+++8EB7~ 1594+++8EB7~ OnOffD DB 0
|
|
1595+++8EB7~ 1596+++8EB7~ ;IX for PTDECOD here (+12)
|
|
1597+++8EB7~ OffOnD DB 0
|
|
1598+++8EB7~ OrnPtr DW 0
|
|
1599+++8EB7~ SamPtr DW 0
|
|
1600+++8EB7~ NNtSkp DB 0
|
|
1601+++8EB7~ Note DB 0
|
|
1602+++8EB7~ SlToNt DB 0
|
|
1603+++8EB7~ Env_En DB 0
|
|
1604+++8EB7~ Flags DB 0
|
|
1605+++8EB7~ ;Enabled - 0, SimpleGliss - 2
|
|
1606+++8EB7~ TnSlDl DB 0
|
|
1607+++8EB7~ TSlStp DW 0
|
|
1608+++8EB7~ TnDelt DW 0
|
|
1609+++8EB7~ NtSkCn DB 0
|
|
1610+++8EB7~ Volume DB 0
|
|
1611+++8EB7~ ENDS
|
|
1612+++8EB7~ 1613+++8EB7~ STRUCT VRS
|
|
1614+++8EB7~ 1615+++8EB7~ ;IF not works in STRUCT in SjASM :(
|
|
1616+++8EB7~ ; IF CurPosCounter
|
|
1617+++8EB7~ CurPos DB 0
|
|
1618+++8EB7~ PosSub DB 0
|
|
1619+++8EB7~ ; ENDIF
|
|
1620+++8EB7~ 1621+++8EB7~ ModNum DB 0 ;bit0: ChipNum
|
|
1622+++8EB7~ ;bit1: 1-reversed patterns order (AlCo TS)
|
|
1623+++8EB7~ 1624+++8EB7~ ChanA DS CHP
|
|
1625+++8EB7~ ChanB DS CHP
|
|
1626+++8EB7~ ChanC DS CHP
|
|
1627+++8EB7~ 1628+++8EB7~ ;GlobalVars
|
|
1629+++8EB7~ MODADDR DW 0
|
|
1630+++8EB7~ OrnPtrs DW 0
|
|
1631+++8EB7~ SamPtrs DW 0
|
|
1632+++8EB7~ PatsPtr DW 0
|
|
1633+++8EB7~ AdInPtA DW 0
|
|
1634+++8EB7~ AdInPtB DW 0
|
|
1635+++8EB7~ AdInPtC DW 0
|
|
1636+++8EB7~ CrPsPtr DW 0
|
|
1637+++8EB7~ LPosPtr DW 0
|
|
1638+++8EB7~ Delay DB 0
|
|
1639+++8EB7~ DelyCnt DB 0
|
|
1640+++8EB7~ ESldAdd DW 0
|
|
1641+++8EB7~ CurESld DW 0
|
|
1642+++8EB7~ Env_Del DB 0
|
|
1643+++8EB7~ CurEDel DB 0
|
|
1644+++8EB7~ Ns_Base DB 0
|
|
1645+++8EB7~ AddToNs DB 0
|
|
1646+++8EB7~ AddToEn DB 0
|
|
1647+++8EB7~ EnvBase DW 0
|
|
1648+++8EB7~ AYREGS DS 14
|
|
1649+++8EB7~ ENDS
|
|
1650+++8EB7~ 1651+++8EB7~ VARS1 DS VRS
|
|
1652+++8EB7~ VARS2 DS VRS
|
|
1653+++8EB7~ 1654+++8EB7~ VT_ EQU $-16
|
|
1655+++8EB7~ DS 256-16 ;CreatedVolumeTableAddress
|
|
1656+++8EB7~ 1657+++8EB7~ T1_ EQU VT_+16 ;Tone tables data depacked here
|
|
1658+++8EB7~ 1659+++8EB7~ T_OLD_1 EQU T1_
|
|
1660+++8EB7~ T_OLD_2 EQU T_OLD_1+24
|
|
1661+++8EB7~ T_OLD_3 EQU T_OLD_2+24
|
|
1662+++8EB7~ T_OLD_0 EQU T_OLD_3+2
|
|
1663+++8EB7~ T_NEW_0 EQU T_OLD_0
|
|
1664+++8EB7~ T_NEW_1 EQU T_OLD_1
|
|
1665+++8EB7~ T_NEW_2 EQU T_NEW_0+24
|
|
1666+++8EB7~ T_NEW_3 EQU T_OLD_3
|
|
1667+++8EB7~ 1668+++8EB7~ PT2EMPTYORN EQU VT_+31 ;1,0,0 sequence
|
|
1669+++8EB7~ 1670+++8EB7~ NT_ DS 192 ;CreatedNoteTableAddress
|
|
1671+++8EB7~ 1672+++8EB7~ VAR0END EQU VT_+16 ;INIT zeroes from VARS to VAR0END-1
|
|
1673+++8EB7~ 1674+++8EB7~ VARSEND EQU $
|
|
1675+++8EB7~ MDLADDR EQU $
|
|
1676+++8EB7~ 1677+++8EB7~ DISPLAY "PTS player size=",$-START
|
|
1678+++8EB7~ 1679+++8EB7~ ;Release 0 steps:
|
|
1680+++8EB7~ ;04/21/2007
|
|
1681+++8EB7~ ;Works start (PTxPlay adaptation); first beta.
|
|
1682+++8EB7~ ;04/22/2007
|
|
1683+++8EB7~ ;Job finished; beta-testing.
|
|
1684+++8EB7~ ;04/23/2007
|
|
1685+++8EB7~ ;PT v3.7 TS mode corrected (after AlCo remarks).
|
|
1686+++8EB7~ ;04/29/2007
|
|
1687+++8EB7~ ;Added 1.XX and 2.XX special commands interpretation for PT3
|
|
1688+++8EB7~ ;modules of v3.7+.
|
|
1689+++8EB7~ 1690+++8EB7~ ;Size (minimal build for ZX Spectrum):
|
|
1691+++8EB7~ ;Code block #908 bytes
|
|
1692+++8EB7~ ;Variables #2BF bytes (can be stripped)
|
|
1693+++8EB7~ ;Total size #908+#2BF=#BC7 (3015) bytes
|
|
1694+++8EB7~ 1695+++8EB7~ ENDMOD
|
|
1696+++8EB7~ 1697+++8EB7 endif
|
|
1698+++8EB7
|
|
0077++ 8EB7
|
|
0078++ 8EB7 PT2.Play=PTS.PLAY
|
|
0079++ 8EB7 PT2.Mute=PTS.MUTE
|
|
0080++ 8EB7 PT2.End
|
|
0081++ 8EB7
|
|
0082++ 8EB7 display "PT2 module size: ",PT2.End-PT2.Start
|
|
0083++ 8EB7 endif
|
|
0084++ 8EB7
|
|
0420+ 8EB7 include "ts.asm"
|
|
0001++ 8EB7 ifndef _ts_asm_defined
|
|
0002++ 8EB7 define _ts_asm_defined
|
|
0003++ 8EB7
|
|
0004++ 8EB7 module TS
|
|
0005++ 8EB7
|
|
0006++ 8EB7 struct Footer
|
|
0007++ 8EB7~ Sign1 DS 4
|
|
0008++ 8EB7~ Size1 DW 0
|
|
0009++ 8EB7~ Sign2 DS 4
|
|
0010++ 8EB7~ Size2 DW 0
|
|
0011++ 8EB7~ Sign3 DS 4
|
|
0012++ 8EB7 ENDS
|
|
0013++ 8EB7
|
|
0014++ 8EB7 Start
|
|
0015++ 8EB7 ifndef NoPrologue
|
|
0016++ 8EB7~ ld hl,End
|
|
0017++ 8EB7~ jr .init
|
|
0018++ 8EB7~ jp PTS.PLAY
|
|
0019++ 8EB7~ jp PTS.MUTE
|
|
0020++ 8EB7~ .init call CheckFormat
|
|
0021++ 8EB7~ ;ignore invalids
|
|
0022++ 8EB7 endif
|
|
0023++ 8EB7
|
|
0024++ 8EB7 3E 10 Init ld a,PTS.SETUP.TS02
|
|
0025++ 8EB9 C3 6C 82 jp PTS.INIT
|
|
0026++ 8EBC
|
|
0027++ 8EBC ;in HL - module addr
|
|
0028++ 8EBC ;out Z - is ts
|
|
0029++ 8EBC ;out HL/DE modules offsets (valid only if Z)
|
|
0030++ 8EBC CheckFormat
|
|
0031++ 8EBD 54 5D ld d,h,e,l
|
|
0032++ 8EBE 14 inc d ;skip 256 bytes
|
|
0033++ 8EBF .findfooter
|
|
0034++ 8EC0 62 6B ld h,d,l,e
|
|
0035++ 8EC1 CD CE 8E call CheckFooter
|
|
0036++ 8EC4 C8 ret z
|
|
0037++ 8EC5 1C inc e
|
|
0038++ 8EC6 20 F7 jr nz,.findfooter
|
|
0039++ 8EC8 14 inc d
|
|
0040++ 8EC9 20 F4 jr nz,.findfooter
|
|
0041++ 8ECB 1C inc e ;reset Z
|
|
0042++ 8ECC ;hl/de are invalid!!!
|
|
0043++ 8ECC C9 ret
|
|
0044++ 8ECD
|
|
0045++ 8ECD ;in HL - module addr
|
|
0046++ 8ECD ;in BC - module size
|
|
0047++ 8ECD ;out Z - is ts
|
|
0048++ 8ECD ;out HL/DE - modules offsets (valid only if Z)
|
|
0049++ 8ECD ifdef HaveFormatCheck
|
|
0050++ 8ECD CheckFormatKnownSize
|
|
0051++ 8ECD 09 add hl,bc
|
|
0052++ 8ECE endif
|
|
0053++ 8ECE CheckFooter
|
|
0054++ 8ECE 2B dec hl
|
|
0055++ 8ECF 7E ld a,(hl)
|
|
0056++ 8ED0 FE 53 cp "S"
|
|
0057++ 8ED2 C0 ret nz
|
|
0058++ 8ED3 2B dec hl
|
|
0059++ 8ED4 7E ld a,(hl)
|
|
0060++ 8ED5 FE 54 cp "T"
|
|
0061++ 8ED7 C0 ret nz
|
|
0062++ 8ED8 2B dec hl
|
|
0063++ 8ED9 7E ld a,(hl)
|
|
0064++ 8EDA FE 32 cp "2"
|
|
0065++ 8EDC C0 ret nz
|
|
0066++ 8EDD 2B dec hl
|
|
0067++ 8EDE 7E ld a,(hl)
|
|
0068++ 8EDF FE 30 cp "0"
|
|
0069++ 8EE1 C0 ret nz
|
|
0070++ 8EE2 2B dec hl
|
|
0071++ 8EE3 56 ld d,(hl)
|
|
0072++ 8EE4 2B dec hl
|
|
0073++ 8EE5 5E ld e,(hl) ;Size2
|
|
0074++ 8EE9 2B 2B 2B 2B dec hl,hl,hl,hl;skip Sign2
|
|
0075++ 8EEA 2B dec hl
|
|
0076++ 8EEB 46 ld b,(hl)
|
|
0077++ 8EEC 2B dec hl
|
|
0078++ 8EED 4E ld c,(hl) ;Size1
|
|
0079++ 8EF1 2B 2B 2B 2B dec hl,hl,hl,hl;skip Sign1
|
|
0080++ 8EF2
|
|
0081++ 8EF2 ED 52 sbc hl,de
|
|
0082++ 8EF4 54 ld d,h
|
|
0083++ 8EF5 5D ld e,l
|
|
0084++ 8EF6 ED 42 sbc hl,bc
|
|
0085++ 8EF8 AF xor a
|
|
0086++ 8EF9 C9 ret
|
|
0087++ 8EFA
|
|
0088++ 8EFA ifdef HaveFormatCheck
|
|
0089++ 8EFA display "TS checker size: ",$-CheckFormat
|
|
0090++ 8EFA endif
|
|
0091++ 8EFA
|
|
0092++ 8EFA endmod
|
|
0093++ 8EFA
|
|
0094++ 8EFA include "PTSPlay.asm"
|
|
0001+++8EFA ifndef _pts_asm_defined
|
|
0002+++8EFA~ define _pts_asm_defined
|
|
0003+++8EFA~ 0004+++8EFA~ MODULE PTS
|
|
0005+++8EFA~
|
|
0006+++8EFA~ ;Universal PT2'n'PT3 Turbo Sound player for ZX Spectrum
|
|
0007+++8EFA~ ;(c)2004-2007 S.V.Bulba <vorobey@mail.khstu.ru>
|
|
0008+++8EFA~ ;Specially for AlCo
|
|
0009+++8EFA~ ;http://bulba.untergrund.net/ (http://bulba.at.kz/)
|
|
0010+++8EFA~ 0011+++8EFA~ ;Release number
|
|
0012+++8EFA~ Release EQU "0"
|
|
0013+++8EFA~ 0014+++8EFA~ ;Conditional assembly
|
|
0015+++8EFA~ ;1) Current position counters at (Vars1+0) and (Vars2+0)
|
|
0016+++8EFA~ CurPosCounter=0
|
|
0017+++8EFA~ ;2) Allow channels allocation bits at (SETUP)
|
|
0018+++8EFA~ ACBBAC=0
|
|
0019+++8EFA~ ;3) Allow loop checking and disabling
|
|
0020+++8EFA~ LoopChecker=0
|
|
0021+++8EFA~ ;4) Insert official identificator
|
|
0022+++8EFA~ Id=0
|
|
0023+++8EFA~ ;5) Set IY for correct return to ZX Basic
|
|
0024+++8EFA~ Basic=0
|
|
0025+++8EFA~ 0026+++8EFA~ ;Features
|
|
0027+++8EFA~ ;--------
|
|
0028+++8EFA~ ;-Can be compiled at any address (i.e. no need rounding ORG
|
|
0029+++8EFA~ ; address).
|
|
0030+++8EFA~ ;-Variables (VARS) can be located at any address (not only after
|
|
0031+++8EFA~ ; code block).
|
|
0032+++8EFA~ ;-INIT subprogram checks PT3-module version and rightly
|
|
0033+++8EFA~ ; generates both note and volume tables outside of code block
|
|
0034+++8EFA~ ; (in VARS).
|
|
0035+++8EFA~ ;-Two portamento (spc. command 3xxx) algorithms (depending of
|
|
0036+++8EFA~ ; PT3 module version).
|
|
0037+++8EFA~ ;-New 1.XX and 2.XX special command behaviour (only for PT v3.7
|
|
0038+++8EFA~ ; and higher).
|
|
0039+++8EFA~ ;-Any Tempo value are accepted (including Tempo=1 and Tempo=2).
|
|
0040+++8EFA~ ;-TS modes: 2xPT3, 2xPT2 and PT v3.7 TS standard.
|
|
0041+++8EFA~ ;-Fully compatible with Ay_Emul PT3 and PT2 players codes.
|
|
0042+++8EFA~ ;-See also notes at the end of this source code.
|
|
0043+++8EFA~ 0044+++8EFA~ ;Limitations
|
|
0045+++8EFA~ ;-----------
|
|
0046+++8EFA~ ;-Can run in RAM only (self-modified code is used).
|
|
0047+++8EFA~ ;-PT2 position list must be end by #FF marker only.
|
|
0048+++8EFA~ 0049+++8EFA~ ;Warning!!! PLAY subprogram can crash if no module are loaded
|
|
0050+++8EFA~ ;into RAM or INIT subprogram was not called before.
|
|
0051+++8EFA~ 0052+++8EFA~ ;Call MUTE or INIT one more time to mute sound after stopping
|
|
0053+++8EFA~ ;playing
|
|
0054+++8EFA~ 0055+++8EFA~ TonA EQU 0
|
|
0056+++8EFA~ TonB EQU 2
|
|
0057+++8EFA~ TonC EQU 4
|
|
0058+++8EFA~ Noise EQU 6
|
|
0059+++8EFA~ Mixer EQU 7
|
|
0060+++8EFA~ AmplA EQU 8
|
|
0061+++8EFA~ AmplB EQU 9
|
|
0062+++8EFA~ AmplC EQU 10
|
|
0063+++8EFA~ Env EQU 11
|
|
0064+++8EFA~ EnvTp EQU 13
|
|
0065+++8EFA~ 0066+++8EFA~ START
|
|
0067+++8EFA~ 0068+++8EFA~ SETUP.NOLOOP EQU 1
|
|
0069+++8EFA~ SETUP.PT2 EQU 2
|
|
0070+++8EFA~ SETUP.ACB EQU 4
|
|
0071+++8EFA~ SETUP.BAC EQU 8
|
|
0072+++8EFA~ SETUP.TS02 EQU 16
|
|
0073+++8EFA~ SETUP.TSPT3 EQU 32
|
|
0074+++8EFA~ 0075+++8EFA~ SETUP DB 0 ;set bit0, if you want to play without looping
|
|
0076+++8EFA~ ;(optional);
|
|
0077+++8EFA~ ;set bit1 for PT2 and reset for PT3 before
|
|
0078+++8EFA~ ;calling INIT;
|
|
0079+++8EFA~ ;bits2-3: %00-ABC, %01-ACB, %10-BAC (optional);
|
|
0080+++8EFA~ ;bits4-5: %00-no TS, %01-2 modules TS, %10-
|
|
0081+++8EFA~ ;autodetect PT3 TS-format by AlCo (PT 3.7+);
|
|
0082+++8EFA~ ;Remark: old PT3 TS-format by AlCo (PT 3.6) is not
|
|
0083+++8EFA~ ;documented and must be converted to new standard.
|
|
0084+++8EFA~ ;bit6 is set each time, when loop point of 2nd TS
|
|
0085+++8EFA~ ;module is passed (optional).
|
|
0086+++8EFA~ ;bit7 is set each time, when loop point of 1st TS
|
|
0087+++8EFA~ ;or of single module is passed (optional).
|
|
0088+++8EFA~ 0089+++8EFA~ ;Identifier
|
|
0090+++8EFA~ IF Id
|
|
0091+++8EFA~ DB "=UniPT2/PT3/TS-Player r.",Release,"="
|
|
0092+++8EFA~ ENDIF
|
|
0093+++8EFA~ 0094+++8EFA~ IF LoopChecker
|
|
0095+++8EFA~ CHECKLP LD HL,SETUP
|
|
0096+++8EFA~ BIT 0,(IY-100+VRS.ModNum)
|
|
0097+++8EFA~ JR Z,CHL1
|
|
0098+++8EFA~ SET 6,(HL)
|
|
0099+++8EFA~ JR CHL2
|
|
0100+++8EFA~ CHL1 SET 7,(HL)
|
|
0101+++8EFA~ CHL2 BIT 0,(HL)
|
|
0102+++8EFA~ RET Z
|
|
0103+++8EFA~ POP HL
|
|
0104+++8EFA~ INC (IY-100+VRS.DelyCnt)
|
|
0105+++8EFA~ INC (IY-100+VRS.ChanA+CHP.NtSkCn)
|
|
0106+++8EFA~ XOR A
|
|
0107+++8EFA~ LD (IY-100+VRS.AYREGS+AmplA),A
|
|
0108+++8EFA~ LD (IY-100+VRS.AYREGS+AmplB),A
|
|
0109+++8EFA~ LD (IY-100+VRS.AYREGS+AmplC),A
|
|
0110+++8EFA~ RET
|
|
0111+++8EFA~ ENDIF
|
|
0112+++8EFA~ 0113+++8EFA~ MUTE XOR A
|
|
0114+++8EFA~ LD H,A
|
|
0115+++8EFA~ LD L,A
|
|
0116+++8EFA~ LD (VARS1+VRS.AYREGS+AmplA),A
|
|
0117+++8EFA~ LD (VARS1+VRS.AYREGS+AmplB),HL
|
|
0118+++8EFA~ LD (VARS2+VRS.AYREGS+AmplA),A
|
|
0119+++8EFA~ LD (VARS2+VRS.AYREGS+AmplB),HL
|
|
0120+++8EFA~ JP ROUT
|
|
0121+++8EFA~ 0122+++8EFA~ INIT
|
|
0123+++8EFA~ ;HL - AddressOfModule
|
|
0124+++8EFA~ ;DE - AddresOf2ndModule
|
|
0125+++8EFA~ ;A - mode
|
|
0126+++8EFA~ PUSH DE
|
|
0127+++8EFA~ PUSH HL
|
|
0128+++8EFA~ LD HL,VARS
|
|
0129+++8EFA~ LD (HL),0
|
|
0130+++8EFA~ LD DE,VARS+1
|
|
0131+++8EFA~ LD BC,VAR0END-VARS-1
|
|
0132+++8EFA~ LDIR
|
|
0133+++8EFA~ INC HL
|
|
0134+++8EFA~ LD (VARS1+VRS.AdInPtA),HL ;ptr to zero
|
|
0135+++8EFA~ LD (VARS2+VRS.AdInPtA),HL
|
|
0136+++8EFA~ 0137+++8EFA~ POP HL
|
|
0138+++8EFA~ LD IY,VARS1+100
|
|
0139+++8EFA~ LD (SETUP),A
|
|
0140+++8EFA~ AND SETUP.PT2
|
|
0141+++8EFA~ JP NZ,I_PT2
|
|
0142+++8EFA~ 0143+++8EFA~ CALL INITPT3
|
|
0144+++8EFA~ LD HL,(e_-SamCnv-2)*256+#18
|
|
0145+++8EFA~ LD (SamCnv),HL
|
|
0146+++8EFA~ LD A,#BA
|
|
0147+++8EFA~ LD (OrnCP),A
|
|
0148+++8EFA~ LD (SamCP),A
|
|
0149+++8EFA~ LD A,#7B
|
|
0150+++8EFA~ LD (OrnLD),A
|
|
0151+++8EFA~ LD (SamLD),A
|
|
0152+++8EFA~ LD A,#87
|
|
0153+++8EFA~ LD (SamClc2),A
|
|
0154+++8EFA~ POP HL
|
|
0155+++8EFA~ ;Use version and ton table of 1st module
|
|
0156+++8EFA~ LD A,(IX+13-100) ;EXTRACT VERSION NUMBER
|
|
0157+++8EFA~ SUB #30
|
|
0158+++8EFA~ JR C,L20
|
|
0159+++8EFA~ CP 10
|
|
0160+++8EFA~ JR C,L21
|
|
0161+++8EFA~ L20 LD A,6
|
|
0162+++8EFA~ L21 LD (Version),A
|
|
0163+++8EFA~ PUSH AF ;VolTable version
|
|
0164+++8EFA~ CP 4
|
|
0165+++8EFA~ LD A,(IX+99-100) ;TONE TABLE NUMBER
|
|
0166+++8EFA~ RLA
|
|
0167+++8EFA~ AND 7
|
|
0168+++8EFA~ PUSH AF ;NoteTable number
|
|
0169+++8EFA~ 0170+++8EFA~ LD IY,VARS2+100
|
|
0171+++8EFA~ LD A,(SETUP)
|
|
0172+++8EFA~ AND SETUP.TS02|SETUP.TSPT3
|
|
0173+++8EFA~ JR Z,NOTS
|
|
0174+++8EFA~ CP SETUP.TS02
|
|
0175+++8EFA~ JR Z,TwoPT3s
|
|
0176+++8EFA~ LD A,(Version)
|
|
0177+++8EFA~ CP 7
|
|
0178+++8EFA~ JR C,NOTS
|
|
0179+++8EFA~ LD A,(IX+98-100) ;ALCO TS MARKER
|
|
0180+++8EFA~ CP #20
|
|
0181+++8EFA~ JR Z,NOTS
|
|
0182+++8EFA~ LD HL,VARS1
|
|
0183+++8EFA~ LD DE,VARS2
|
|
0184+++8EFA~ LD BC,VRS
|
|
0185+++8EFA~ LDIR
|
|
0186+++8EFA~ SET 1,(IY-100+VRS.ModNum)
|
|
0187+++8EFA~ LD C,A
|
|
0188+++8EFA~ ADD A,A
|
|
0189+++8EFA~ ADD A,C
|
|
0190+++8EFA~ SUB 2
|
|
0191+++8EFA~ LD (TSSub),A
|
|
0192+++8EFA~ JR AlCoTS_
|
|
0193+++8EFA~ TwoPT3s CALL INITPT3
|
|
0194+++8EFA~ AlCoTS_ LD A,1
|
|
0195+++8EFA~ LD (is_ts),A
|
|
0196+++8EFA~ SET 0,(IY-100+VRS.ModNum)
|
|
0197+++8EFA~ 0198+++8EFA~ NOTS LD BC,PT3PD
|
|
0199+++8EFA~ LD HL,0
|
|
0200+++8EFA~ LD DE,PT3EMPTYORN
|
|
0201+++8EFA~ JR INITCOMMON
|
|
0202+++8EFA~ 0203+++8EFA~ I_PT2 CALL INITPT2
|
|
0204+++8EFA~ LD HL,#51CB
|
|
0205+++8EFA~ LD (SamCnv),HL
|
|
0206+++8EFA~ LD A,#BB
|
|
0207+++8EFA~ LD (OrnCP),A
|
|
0208+++8EFA~ LD (SamCP),A
|
|
0209+++8EFA~ LD A,#7A
|
|
0210+++8EFA~ LD (OrnLD),A
|
|
0211+++8EFA~ LD (SamLD),A
|
|
0212+++8EFA~ LD A,#80
|
|
0213+++8EFA~ LD (SamClc2),A
|
|
0214+++8EFA~ POP HL
|
|
0215+++8EFA~ LD A,5
|
|
0216+++8EFA~ LD (Version),A
|
|
0217+++8EFA~ PUSH AF
|
|
0218+++8EFA~ LD A,2
|
|
0219+++8EFA~ PUSH AF
|
|
0220+++8EFA~ 0221+++8EFA~ LD A,(SETUP)
|
|
0222+++8EFA~ AND SETUP.TS02|SETUP.TSPT3
|
|
0223+++8EFA~ JR Z,NOTS2
|
|
0224+++8EFA~ 0225+++8EFA~ LD IY,VARS2+100
|
|
0226+++8EFA~ LD A,1
|
|
0227+++8EFA~ LD (is_ts),A
|
|
0228+++8EFA~ SET 0,(IY-100+VRS.ModNum)
|
|
0229+++8EFA~ CALL INITPT2
|
|
0230+++8EFA~ 0231+++8EFA~ NOTS2 LD BC,PT2PD
|
|
0232+++8EFA~ LD HL,#8687
|
|
0233+++8EFA~ LD DE,PT2EMPTYORN
|
|
0234+++8EFA~ 0235+++8EFA~ INITCOMMON
|
|
0236+++8EFA~ 0237+++8EFA~ IF Basic
|
|
0238+++8EFA~ LD IY,#5C3A
|
|
0239+++8EFA~ ENDIF
|
|
0240+++8EFA~ 0241+++8EFA~ LD (PTDEC),BC
|
|
0242+++8EFA~ LD (PsCalc),HL
|
|
0243+++8EFA~ PUSH DE
|
|
0244+++8EFA~ 0245+++8EFA~ ;note table data depacker
|
|
0246+++8EFA~ ;(c) Ivan Roshin
|
|
0247+++8EFA~ LD DE,T_PACK
|
|
0248+++8EFA~ LD BC,T1_+(2*49)-1
|
|
0249+++8EFA~ TP_0 LD A,(DE)
|
|
0250+++8EFA~ INC DE
|
|
0251+++8EFA~ CP 15*2
|
|
0252+++8EFA~ JR NC,TP_1
|
|
0253+++8EFA~ LD H,A
|
|
0254+++8EFA~ LD A,(DE)
|
|
0255+++8EFA~ LD L,A
|
|
0256+++8EFA~ INC DE
|
|
0257+++8EFA~ JR TP_2
|
|
0258+++8EFA~ TP_1 PUSH DE
|
|
0259+++8EFA~ LD D,0
|
|
0260+++8EFA~ LD E,A
|
|
0261+++8EFA~ ADD HL,DE
|
|
0262+++8EFA~ ADD HL,DE
|
|
0263+++8EFA~ POP DE
|
|
0264+++8EFA~ TP_2 LD A,H
|
|
0265+++8EFA~ LD (BC),A
|
|
0266+++8EFA~ DEC BC
|
|
0267+++8EFA~ LD A,L
|
|
0268+++8EFA~ LD (BC),A
|
|
0269+++8EFA~ DEC BC
|
|
0270+++8EFA~ SUB (#F8*2)&255
|
|
0271+++8EFA~ JR NZ,TP_0
|
|
0272+++8EFA~ 0273+++8EFA~ INC A
|
|
0274+++8EFA~ LD (VARS1+VRS.DelyCnt),A
|
|
0275+++8EFA~ LD (VARS2+VRS.DelyCnt),A
|
|
0276+++8EFA~ LD HL,#F001 ;H - CHP.Volume, L - CHP.NtSkCn
|
|
0277+++8EFA~ LD (VARS1+VRS.ChanA+CHP.NtSkCn),HL
|
|
0278+++8EFA~ LD (VARS1+VRS.ChanB+CHP.NtSkCn),HL
|
|
0279+++8EFA~ LD (VARS1+VRS.ChanC+CHP.NtSkCn),HL
|
|
0280+++8EFA~ LD (VARS2+VRS.ChanA+CHP.NtSkCn),HL
|
|
0281+++8EFA~ LD (VARS2+VRS.ChanB+CHP.NtSkCn),HL
|
|
0282+++8EFA~ LD (VARS2+VRS.ChanC+CHP.NtSkCn),HL
|
|
0283+++8EFA~ POP HL
|
|
0284+++8EFA~ LD (VARS1+VRS.ChanA+CHP.OrnPtr),HL
|
|
0285+++8EFA~ LD (VARS1+VRS.ChanB+CHP.OrnPtr),HL
|
|
0286+++8EFA~ LD (VARS1+VRS.ChanC+CHP.OrnPtr),HL
|
|
0287+++8EFA~ LD (VARS2+VRS.ChanA+CHP.OrnPtr),HL
|
|
0288+++8EFA~ LD (VARS2+VRS.ChanB+CHP.OrnPtr),HL
|
|
0289+++8EFA~ LD (VARS2+VRS.ChanC+CHP.OrnPtr),HL
|
|
0290+++8EFA~ 0291+++8EFA~ POP AF
|
|
0292+++8EFA~ 0293+++8EFA~ ;NoteTableCreator (c) Ivan Roshin
|
|
0294+++8EFA~ ;A - NoteTableNumber*2+VersionForNoteTable
|
|
0295+++8EFA~ ;(xx1b - 3.xx..3.4r, xx0b - 3.4x..3.6x..VTII1.0)
|
|
0296+++8EFA~ 0297+++8EFA~ LD HL,NT_DATA
|
|
0298+++8EFA~ LD D,0
|
|
0299+++8EFA~ ADD A,A
|
|
0300+++8EFA~ LD E,A
|
|
0301+++8EFA~ ADD HL,DE
|
|
0302+++8EFA~ LD E,(HL)
|
|
0303+++8EFA~ INC HL
|
|
0304+++8EFA~ SRL E
|
|
0305+++8EFA~ SBC A,A
|
|
0306+++8EFA~ AND #A7 ;#00 (NOP) or #A7 (AND A)
|
|
0307+++8EFA~ LD (L3),A
|
|
0308+++8EFA~ EX DE,HL
|
|
0309+++8EFA~ LD BC,T1_
|
|
0310+++8EFA~ ADD HL,BC
|
|
0311+++8EFA~ 0312+++8EFA~ LD A,(DE)
|
|
0313+++8EFA~ ADD A,T_&255
|
|
0314+++8EFA~ LD C,A
|
|
0315+++8EFA~ ADC A,T_/256
|
|
0316+++8EFA~ SUB C
|
|
0317+++8EFA~ LD B,A
|
|
0318+++8EFA~ PUSH BC
|
|
0319+++8EFA~ LD DE,NT_
|
|
0320+++8EFA~ PUSH DE
|
|
0321+++8EFA~ 0322+++8EFA~ LD B,12
|
|
0323+++8EFA~ L1 PUSH BC
|
|
0324+++8EFA~ LD C,(HL)
|
|
0325+++8EFA~ INC HL
|
|
0326+++8EFA~ PUSH HL
|
|
0327+++8EFA~ LD B,(HL)
|
|
0328+++8EFA~ 0329+++8EFA~ PUSH DE
|
|
0330+++8EFA~ EX DE,HL
|
|
0331+++8EFA~ LD DE,23
|
|
0332+++8EFA~ LD IXH,8
|
|
0333+++8EFA~ 0334+++8EFA~ L2 SRL B
|
|
0335+++8EFA~ RR C
|
|
0336+++8EFA~ L3 DB #19 ;AND A or NOP
|
|
0337+++8EFA~ LD A,C
|
|
0338+++8EFA~ ADC A,D ;=ADC 0
|
|
0339+++8EFA~ LD (HL),A
|
|
0340+++8EFA~ INC HL
|
|
0341+++8EFA~ LD A,B
|
|
0342+++8EFA~ ADC A,D
|
|
0343+++8EFA~ LD (HL),A
|
|
0344+++8EFA~ ADD HL,DE
|
|
0345+++8EFA~ DEC IXH
|
|
0346+++8EFA~ JR NZ,L2
|
|
0347+++8EFA~ 0348+++8EFA~ POP DE
|
|
0349+++8EFA~ INC DE
|
|
0350+++8EFA~ INC DE
|
|
0351+++8EFA~ POP HL
|
|
0352+++8EFA~ INC HL
|
|
0353+++8EFA~ POP BC
|
|
0354+++8EFA~ DJNZ L1
|
|
0355+++8EFA~ 0356+++8EFA~ POP HL
|
|
0357+++8EFA~ POP DE
|
|
0358+++8EFA~ 0359+++8EFA~ LD A,E
|
|
0360+++8EFA~ CP TCOLD_1&255
|
|
0361+++8EFA~ JR NZ,CORR_1
|
|
0362+++8EFA~ LD A,#FD
|
|
0363+++8EFA~ LD (NT_+#2E),A
|
|
0364+++8EFA~ 0365+++8EFA~ CORR_1 LD A,(DE)
|
|
0366+++8EFA~ AND A
|
|
0367+++8EFA~ JR Z,TC_EXIT
|
|
0368+++8EFA~ RRA
|
|
0369+++8EFA~ PUSH AF
|
|
0370+++8EFA~ ADD A,A
|
|
0371+++8EFA~ LD C,A
|
|
0372+++8EFA~ ADD HL,BC
|
|
0373+++8EFA~ POP AF
|
|
0374+++8EFA~ JR NC,CORR_2
|
|
0375+++8EFA~ DEC (HL)
|
|
0376+++8EFA~ DEC (HL)
|
|
0377+++8EFA~ CORR_2 INC (HL)
|
|
0378+++8EFA~ AND A
|
|
0379+++8EFA~ SBC HL,BC
|
|
0380+++8EFA~ INC DE
|
|
0381+++8EFA~ JR CORR_1
|
|
0382+++8EFA~ 0383+++8EFA~ TC_EXIT
|
|
0384+++8EFA~ 0385+++8EFA~ POP AF
|
|
0386+++8EFA~ 0387+++8EFA~ ;VolTableCreator (c) Ivan Roshin
|
|
0388+++8EFA~ ;A - VersionForVolumeTable (0..4 - 3.xx..3.4x;
|
|
0389+++8EFA~ ;5.. - 2.x,3.5x..3.6x..VTII1.0)
|
|
0390+++8EFA~ 0391+++8EFA~ CP 5
|
|
0392+++8EFA~ LD HL,#11
|
|
0393+++8EFA~ LD D,H
|
|
0394+++8EFA~ LD E,H
|
|
0395+++8EFA~ LD A,#17
|
|
0396+++8EFA~ JR NC,M1
|
|
0397+++8EFA~ DEC L
|
|
0398+++8EFA~ LD E,L
|
|
0399+++8EFA~ XOR A
|
|
0400+++8EFA~ M1 LD (M2),A
|
|
0401+++8EFA~ 0402+++8EFA~ LD IX,VT_+16
|
|
0403+++8EFA~ 0404+++8EFA~ LD C,#F
|
|
0405+++8EFA~ INITV2 PUSH HL
|
|
0406+++8EFA~ 0407+++8EFA~ ADD HL,DE
|
|
0408+++8EFA~ EX DE,HL
|
|
0409+++8EFA~ SBC HL,HL
|
|
0410+++8EFA~ 0411+++8EFA~ LD B,#10
|
|
0412+++8EFA~ INITV1 LD A,L
|
|
0413+++8EFA~ M2 DB #7D
|
|
0414+++8EFA~ LD A,H
|
|
0415+++8EFA~ ADC A,0
|
|
0416+++8EFA~ LD (IX),A
|
|
0417+++8EFA~ INC IX
|
|
0418+++8EFA~ ADD HL,DE
|
|
0419+++8EFA~ DJNZ INITV1
|
|
0420+++8EFA~ 0421+++8EFA~ POP HL
|
|
0422+++8EFA~ LD A,E
|
|
0423+++8EFA~ CP #77
|
|
0424+++8EFA~ JR NZ,M3
|
|
0425+++8EFA~ INC E
|
|
0426+++8EFA~ M3 DEC C
|
|
0427+++8EFA~ JR NZ,INITV2
|
|
0428+++8EFA~ 0429+++8EFA~ JP ROUT
|
|
0430+++8EFA~ 0431+++8EFA~ INITPT3 CALL SETMDAD
|
|
0432+++8EFA~ PUSH HL
|
|
0433+++8EFA~ LD DE,100
|
|
0434+++8EFA~ ADD HL,DE
|
|
0435+++8EFA~ LD A,(HL)
|
|
0436+++8EFA~ LD (IY-100+VRS.Delay),A
|
|
0437+++8EFA~ PUSH HL
|
|
0438+++8EFA~ POP IX
|
|
0439+++8EFA~ ADD HL,DE
|
|
0440+++8EFA~ CALL SETCPPT
|
|
0441+++8EFA~ LD E,(IX+102-100)
|
|
0442+++8EFA~ INC HL
|
|
0443+++8EFA~ 0444+++8EFA~ IF CurPosCounter
|
|
0445+++8EFA~ LD (IY-100+VRS.PosSub),L
|
|
0446+++8EFA~ ENDIF
|
|
0447+++8EFA~ 0448+++8EFA~ ADD HL,DE
|
|
0449+++8EFA~ CALL SETLPPT
|
|
0450+++8EFA~ POP DE
|
|
0451+++8EFA~ LD L,(IX+103-100)
|
|
0452+++8EFA~ LD H,(IX+104-100)
|
|
0453+++8EFA~ ADD HL,DE
|
|
0454+++8EFA~ CALL SETPTPT
|
|
0455+++8EFA~ LD HL,169
|
|
0456+++8EFA~ ADD HL,DE
|
|
0457+++8EFA~ CALL SETORPT
|
|
0458+++8EFA~ LD HL,105
|
|
0459+++8EFA~ ADD HL,DE
|
|
0460+++8EFA~ 0461+++8EFA~ SETSMPT LD (IY-100+VRS.SamPtrs),L
|
|
0462+++8EFA~ LD (IY-100+VRS.SamPtrs+1),H
|
|
0463+++8EFA~ RET
|
|
0464+++8EFA~ 0465+++8EFA~ INITPT2 LD A,(HL)
|
|
0466+++8EFA~ LD (IY-100+VRS.Delay),A
|
|
0467+++8EFA~ PUSH HL
|
|
0468+++8EFA~ PUSH HL
|
|
0469+++8EFA~ PUSH HL
|
|
0470+++8EFA~ INC HL
|
|
0471+++8EFA~ INC HL
|
|
0472+++8EFA~ LD A,(HL)
|
|
0473+++8EFA~ INC HL
|
|
0474+++8EFA~ CALL SETSMPT
|
|
0475+++8EFA~ LD E,(HL)
|
|
0476+++8EFA~ INC HL
|
|
0477+++8EFA~ LD D,(HL)
|
|
0478+++8EFA~ POP HL
|
|
0479+++8EFA~ AND A
|
|
0480+++8EFA~ SBC HL,DE
|
|
0481+++8EFA~ CALL SETMDAD
|
|
0482+++8EFA~ POP HL
|
|
0483+++8EFA~ LD DE,67
|
|
0484+++8EFA~ ADD HL,DE
|
|
0485+++8EFA~ CALL SETORPT
|
|
0486+++8EFA~ LD E,32
|
|
0487+++8EFA~ ADD HL,DE
|
|
0488+++8EFA~ LD C,(HL)
|
|
0489+++8EFA~ INC HL
|
|
0490+++8EFA~ LD B,(HL)
|
|
0491+++8EFA~ LD E,30
|
|
0492+++8EFA~ ADD HL,DE
|
|
0493+++8EFA~ CALL SETCPPT
|
|
0494+++8EFA~ LD E,A
|
|
0495+++8EFA~ INC HL
|
|
0496+++8EFA~ 0497+++8EFA~ IF CurPosCounter
|
|
0498+++8EFA~ LD (IY-100+VRS.PosSub),L
|
|
0499+++8EFA~ ENDIF
|
|
0500+++8EFA~ 0501+++8EFA~ ADD HL,DE
|
|
0502+++8EFA~ CALL SETLPPT
|
|
0503+++8EFA~ POP HL
|
|
0504+++8EFA~ ADD HL,BC
|
|
0505+++8EFA~ 0506+++8EFA~ SETPTPT LD (IY-100+VRS.PatsPtr),L
|
|
0507+++8EFA~ LD (IY-100+VRS.PatsPtr+1),H
|
|
0508+++8EFA~ RET
|
|
0509+++8EFA~ 0510+++8EFA~ SETMDAD LD (IY-100+VRS.MODADDR),L
|
|
0511+++8EFA~ LD (IY-100+VRS.MODADDR+1),H
|
|
0512+++8EFA~ RET
|
|
0513+++8EFA~ 0514+++8EFA~ SETORPT LD (IY-100+VRS.OrnPtrs),L
|
|
0515+++8EFA~ LD (IY-100+VRS.OrnPtrs+1),H
|
|
0516+++8EFA~ RET
|
|
0517+++8EFA~ 0518+++8EFA~ SETCPPT LD (IY-100+VRS.CrPsPtr),L
|
|
0519+++8EFA~ LD (IY-100+VRS.CrPsPtr+1),H
|
|
0520+++8EFA~ RET
|
|
0521+++8EFA~ 0522+++8EFA~ SETLPPT LD (IY-100+VRS.LPosPtr),L
|
|
0523+++8EFA~ LD (IY-100+VRS.LPosPtr+1),H
|
|
0524+++8EFA~ RET
|
|
0525+++8EFA~ 0526+++8EFA~ SETENBS LD (IY-100+VRS.EnvBase),L
|
|
0527+++8EFA~ LD (IY-100+VRS.EnvBase+1),H
|
|
0528+++8EFA~ RET
|
|
0529+++8EFA~ 0530+++8EFA~ SETESLD LD (IY-100+VRS.CurESld),L
|
|
0531+++8EFA~ LD (IY-100+VRS.CurESld+1),H
|
|
0532+++8EFA~ RET
|
|
0533+++8EFA~ 0534+++8EFA~ GETIX PUSH IY
|
|
0535+++8EFA~ POP IX
|
|
0536+++8EFA~ ADD IX,DE
|
|
0537+++8EFA~ RET
|
|
0538+++8EFA~ 0539+++8EFA~ PTDECOD CALL GETIX
|
|
0540+++8EFA~ PTDEC EQU $+1
|
|
0541+++8EFA~ JP #C3C3
|
|
0542+++8EFA~ 0543+++8EFA~ ;PT2 pattern decoder
|
|
0544+++8EFA~ PD2_SAM CALL SETSAM
|
|
0545+++8EFA~ JR PD2_LOOP
|
|
0546+++8EFA~ 0547+++8EFA~ PD2_EOff LD (IX-12+CHP.Env_En),A
|
|
0548+++8EFA~ JR PD2_LOOP
|
|
0549+++8EFA~ 0550+++8EFA~ PD2_ENV LD (IX-12+CHP.Env_En),16
|
|
0551+++8EFA~ LD (IY-100+VRS.AYREGS+EnvTp),A
|
|
0552+++8EFA~ LD A,(BC)
|
|
0553+++8EFA~ INC BC
|
|
0554+++8EFA~ LD L,A
|
|
0555+++8EFA~ LD A,(BC)
|
|
0556+++8EFA~ INC BC
|
|
0557+++8EFA~ LD H,A
|
|
0558+++8EFA~ CALL SETENBS
|
|
0559+++8EFA~ JR PD2_LOOP
|
|
0560+++8EFA~ 0561+++8EFA~ PD2_ORN CALL SETORN
|
|
0562+++8EFA~ JR PD2_LOOP
|
|
0563+++8EFA~ 0564+++8EFA~ PD2_SKIP INC A
|
|
0565+++8EFA~ LD (IX-12+CHP.NNtSkp),A
|
|
0566+++8EFA~ JR PD2_LOOP
|
|
0567+++8EFA~ 0568+++8EFA~ PD2_VOL RRCA
|
|
0569+++8EFA~ RRCA
|
|
0570+++8EFA~ RRCA
|
|
0571+++8EFA~ RRCA
|
|
0572+++8EFA~ LD (IX-12+CHP.Volume),A
|
|
0573+++8EFA~ JR PD2_LOOP
|
|
0574+++8EFA~ 0575+++8EFA~ PD2_DEL CALL C_DELAY
|
|
0576+++8EFA~ JR PD2_LOOP
|
|
0577+++8EFA~ 0578+++8EFA~ PD2_GLIS SET 2,(IX-12+CHP.Flags)
|
|
0579+++8EFA~ INC A
|
|
0580+++8EFA~ LD (IX-12+CHP.TnSlDl),A
|
|
0581+++8EFA~ LD (IX-12+CHP.TSlCnt),A
|
|
0582+++8EFA~ LD A,(BC)
|
|
0583+++8EFA~ INC BC
|
|
0584+++8EFA~ LD (IX-12+CHP.TSlStp),A
|
|
0585+++8EFA~ ADD A,A
|
|
0586+++8EFA~ SBC A,A
|
|
0587+++8EFA~ LD (IX-12+CHP.TSlStp+1),A
|
|
0588+++8EFA~ SCF
|
|
0589+++8EFA~ JR PD2_LP2
|
|
0590+++8EFA~ 0591+++8EFA~ PT2PD AND A
|
|
0592+++8EFA~ 0593+++8EFA~ PD2_LP2 EX AF,AF'
|
|
0594+++8EFA~ 0595+++8EFA~ PD2_LOOP LD A,(BC)
|
|
0596+++8EFA~ INC BC
|
|
0597+++8EFA~ ADD A,#20
|
|
0598+++8EFA~ JR Z,PD2_REL
|
|
0599+++8EFA~ JR C,PD2_SAM
|
|
0600+++8EFA~ ADD A,96
|
|
0601+++8EFA~ JR C,PD2_NOTE
|
|
0602+++8EFA~ INC A
|
|
0603+++8EFA~ JR Z,PD2_EOff
|
|
0604+++8EFA~ ADD A,15
|
|
0605+++8EFA~ JP Z,PD_FIN
|
|
0606+++8EFA~ JR C,PD2_ENV
|
|
0607+++8EFA~ ADD A,#10
|
|
0608+++8EFA~ JR C,PD2_ORN
|
|
0609+++8EFA~ ADD A,#40
|
|
0610+++8EFA~ JR C,PD2_SKIP
|
|
0611+++8EFA~ ADD A,#10
|
|
0612+++8EFA~ JR C,PD2_VOL
|
|
0613+++8EFA~ INC A
|
|
0614+++8EFA~ JR Z,PD2_DEL
|
|
0615+++8EFA~ INC A
|
|
0616+++8EFA~ JR Z,PD2_GLIS
|
|
0617+++8EFA~ INC A
|
|
0618+++8EFA~ JR Z,PD2_PORT
|
|
0619+++8EFA~ INC A
|
|
0620+++8EFA~ JR Z,PD2_STOP
|
|
0621+++8EFA~ LD A,(BC)
|
|
0622+++8EFA~ INC BC
|
|
0623+++8EFA~ LD (IX-12+CHP.CrNsSl),A
|
|
0624+++8EFA~ JR PD2_LOOP
|
|
0625+++8EFA~ 0626+++8EFA~ PD2_PORT RES 2,(IX-12+CHP.Flags)
|
|
0627+++8EFA~ LD A,(BC)
|
|
0628+++8EFA~ INC BC
|
|
0629+++8EFA~ INC BC ;ignoring precalc delta to right sound
|
|
0630+++8EFA~ INC BC
|
|
0631+++8EFA~ SCF
|
|
0632+++8EFA~ JR PD2_LP2
|
|
0633+++8EFA~ 0634+++8EFA~ PD2_STOP LD (IX-12+CHP.TSlCnt),A
|
|
0635+++8EFA~ JR PD2_LOOP
|
|
0636+++8EFA~ 0637+++8EFA~ PD2_REL LD (IX-12+CHP.Flags),A
|
|
0638+++8EFA~ JR PD2_EXIT
|
|
0639+++8EFA~ 0640+++8EFA~ PD2_NOTE LD L,A
|
|
0641+++8EFA~ LD A,(IX-12+CHP.Note)
|
|
0642+++8EFA~ LD (PrNote+1),A
|
|
0643+++8EFA~ LD (IX-12+CHP.Note),L
|
|
0644+++8EFA~ XOR A
|
|
0645+++8EFA~ LD (IX-12+CHP.TSlCnt),A
|
|
0646+++8EFA~ SET 0,(IX-12+CHP.Flags)
|
|
0647+++8EFA~ EX AF,AF'
|
|
0648+++8EFA~ JR NC,NOGLIS2
|
|
0649+++8EFA~ BIT 2,(IX-12+CHP.Flags)
|
|
0650+++8EFA~ JR NZ,NOPORT2
|
|
0651+++8EFA~ LD (LoStep),A
|
|
0652+++8EFA~ ADD A,A
|
|
0653+++8EFA~ SBC A,A
|
|
0654+++8EFA~ EX AF,AF'
|
|
0655+++8EFA~ LD H,A
|
|
0656+++8EFA~ LD L,A
|
|
0657+++8EFA~ INC A
|
|
0658+++8EFA~ CALL SETPORT
|
|
0659+++8EFA~ NOPORT2 LD (IX-12+CHP.TSlCnt),1
|
|
0660+++8EFA~ NOGLIS2 XOR A
|
|
0661+++8EFA~ 0662+++8EFA~ 0663+++8EFA~ PD2_EXIT LD (IX-12+CHP.PsInSm),A
|
|
0664+++8EFA~ LD (IX-12+CHP.PsInOr),A
|
|
0665+++8EFA~ LD (IX-12+CHP.CrTnSl),A
|
|
0666+++8EFA~ LD (IX-12+CHP.CrTnSl+1),A
|
|
0667+++8EFA~ JP PD_FIN
|
|
0668+++8EFA~ 0669+++8EFA~ ;PT3 pattern decoder
|
|
0670+++8EFA~ PD_OrSm LD (IX-12+CHP.Env_En),0
|
|
0671+++8EFA~ CALL SETORN
|
|
0672+++8EFA~ PD_SAM_ LD A,(BC)
|
|
0673+++8EFA~ INC BC
|
|
0674+++8EFA~ RRCA
|
|
0675+++8EFA~ 0676+++8EFA~ PD_SAM CALL SETSAM
|
|
0677+++8EFA~ JR PD_LOOP
|
|
0678+++8EFA~ 0679+++8EFA~ PD_VOL RRCA
|
|
0680+++8EFA~ RRCA
|
|
0681+++8EFA~ RRCA
|
|
0682+++8EFA~ RRCA
|
|
0683+++8EFA~ LD (IX-12+CHP.Volume),A
|
|
0684+++8EFA~ JR PD_LP2
|
|
0685+++8EFA~
|
|
0686+++8EFA~ PD_EOff LD (IX-12+CHP.Env_En),A
|
|
0687+++8EFA~ LD (IX-12+CHP.PsInOr),A
|
|
0688+++8EFA~ JR PD_LP2
|
|
0689+++8EFA~ 0690+++8EFA~ PD_SorE DEC A
|
|
0691+++8EFA~ JR NZ,PD_ENV
|
|
0692+++8EFA~ LD A,(BC)
|
|
0693+++8EFA~ INC BC
|
|
0694+++8EFA~ LD (IX-12+CHP.NNtSkp),A
|
|
0695+++8EFA~ JR PD_LP2
|
|
0696+++8EFA~ 0697+++8EFA~ PD_ENV CALL SETENV
|
|
0698+++8EFA~ JR PD_LP2
|
|
0699+++8EFA~ 0700+++8EFA~ PD_ORN CALL SETORN
|
|
0701+++8EFA~ JR PD_LOOP
|
|
0702+++8EFA~ 0703+++8EFA~ PD_ESAM LD (IX-12+CHP.Env_En),A
|
|
0704+++8EFA~ LD (IX-12+CHP.PsInOr),A
|
|
0705+++8EFA~ CALL NZ,SETENV
|
|
0706+++8EFA~ JR PD_SAM_
|
|
0707+++8EFA~ 0708+++8EFA~ PT3PD LD A,(IX-12+CHP.Note)
|
|
0709+++8EFA~ LD (PrNote+1),A
|
|
0710+++8EFA~ LD L,(IX-12+CHP.CrTnSl)
|
|
0711+++8EFA~ LD H,(IX-12+CHP.CrTnSl+1)
|
|
0712+++8EFA~ LD (PrSlide+1),HL
|
|
0713+++8EFA~ 0714+++8EFA~ PD_LOOP LD DE,#2010
|
|
0715+++8EFA~ PD_LP2 LD A,(BC)
|
|
0716+++8EFA~ INC BC
|
|
0717+++8EFA~ ADD A,E
|
|
0718+++8EFA~ JR C,PD_OrSm
|
|
0719+++8EFA~ ADD A,D
|
|
0720+++8EFA~ JR Z,PD_FIN
|
|
0721+++8EFA~ JR C,PD_SAM
|
|
0722+++8EFA~ ADD A,E
|
|
0723+++8EFA~ JR Z,PD_REL
|
|
0724+++8EFA~ JR C,PD_VOL
|
|
0725+++8EFA~ ADD A,E
|
|
0726+++8EFA~ JR Z,PD_EOff
|
|
0727+++8EFA~ JR C,PD_SorE
|
|
0728+++8EFA~ ADD A,96
|
|
0729+++8EFA~ JR C,PD_NOTE
|
|
0730+++8EFA~ ADD A,E
|
|
0731+++8EFA~ JR C,PD_ORN
|
|
0732+++8EFA~ ADD A,D
|
|
0733+++8EFA~ JR C,PD_NOIS
|
|
0734+++8EFA~ ADD A,E
|
|
0735+++8EFA~ JR C,PD_ESAM
|
|
0736+++8EFA~ ADD A,A
|
|
0737+++8EFA~ LD E,A
|
|
0738+++8EFA~ LD HL,(SPCCOMS+#FF20-#2000)&65535
|
|
0739+++8EFA~ ADD HL,DE
|
|
0740+++8EFA~ LD E,(HL)
|
|
0741+++8EFA~ INC HL
|
|
0742+++8EFA~ LD D,(HL)
|
|
0743+++8EFA~ PUSH DE
|
|
0744+++8EFA~ JR PD_LOOP
|
|
0745+++8EFA~ 0746+++8EFA~ PD_NOIS LD (IY-100+VRS.Ns_Base),A
|
|
0747+++8EFA~ JR PD_LP2
|
|
0748+++8EFA~ 0749+++8EFA~ PD_REL RES 0,(IX-12+CHP.Flags)
|
|
0750+++8EFA~ JR PD_RES
|
|
0751+++8EFA~ 0752+++8EFA~ PD_NOTE LD (IX-12+CHP.Note),A
|
|
0753+++8EFA~ SET 0,(IX-12+CHP.Flags)
|
|
0754+++8EFA~ XOR A
|
|
0755+++8EFA~ 0756+++8EFA~ PD_RES LD (PDSP_+1),SP
|
|
0757+++8EFA~ LD SP,IX
|
|
0758+++8EFA~ LD H,A
|
|
0759+++8EFA~ LD L,A
|
|
0760+++8EFA~ PUSH HL
|
|
0761+++8EFA~ PUSH HL
|
|
0762+++8EFA~ PUSH HL
|
|
0763+++8EFA~ PUSH HL
|
|
0764+++8EFA~ PUSH HL
|
|
0765+++8EFA~ PUSH HL
|
|
0766+++8EFA~ PDSP_ LD SP,#3131
|
|
0767+++8EFA~ 0768+++8EFA~ PD_FIN LD A,(IX-12+CHP.NNtSkp)
|
|
0769+++8EFA~ LD (IX-12+CHP.NtSkCn),A
|
|
0770+++8EFA~ RET
|
|
0771+++8EFA~ 0772+++8EFA~ C_PORTM LD A,(BC)
|
|
0773+++8EFA~ INC BC
|
|
0774+++8EFA~ ;SKIP PRECALCULATED TONE DELTA (BECAUSE
|
|
0775+++8EFA~ ;CANNOT BE RIGHT AFTER PT3 COMPILATION)
|
|
0776+++8EFA~ INC BC
|
|
0777+++8EFA~ INC BC
|
|
0778+++8EFA~ EX AF,AF'
|
|
0779+++8EFA~ LD A,(BC) ;SIGNED TONE STEP
|
|
0780+++8EFA~ INC BC
|
|
0781+++8EFA~ LD (LoStep),A
|
|
0782+++8EFA~ LD A,(BC)
|
|
0783+++8EFA~ INC BC
|
|
0784+++8EFA~ AND A
|
|
0785+++8EFA~ EX AF,AF'
|
|
0786+++8EFA~ LD L,(IX-12+CHP.CrTnSl)
|
|
0787+++8EFA~ LD H,(IX-12+CHP.CrTnSl+1)
|
|
0788+++8EFA~ 0789+++8EFA~ ;Set portamento variables
|
|
0790+++8EFA~ ;A - Delay; A' - Hi(Step); ZF' - (A'=0); HL - CrTnSl
|
|
0791+++8EFA~ 0792+++8EFA~ SETPORT RES 2,(IX-12+CHP.Flags)
|
|
0793+++8EFA~ LD (IX-12+CHP.TnSlDl),A
|
|
0794+++8EFA~ LD (IX-12+CHP.TSlCnt),A
|
|
0795+++8EFA~ PUSH HL
|
|
0796+++8EFA~ LD DE,NT_
|
|
0797+++8EFA~ LD A,(IX-12+CHP.Note)
|
|
0798+++8EFA~ LD (IX-12+CHP.SlToNt),A
|
|
0799+++8EFA~ ADD A,A
|
|
0800+++8EFA~ LD L,A
|
|
0801+++8EFA~ LD H,0
|
|
0802+++8EFA~ ADD HL,DE
|
|
0803+++8EFA~ LD A,(HL)
|
|
0804+++8EFA~ INC HL
|
|
0805+++8EFA~ LD H,(HL)
|
|
0806+++8EFA~ LD L,A
|
|
0807+++8EFA~ PUSH HL
|
|
0808+++8EFA~ PrNote LD A,#3E
|
|
0809+++8EFA~ LD (IX-12+CHP.Note),A
|
|
0810+++8EFA~ ADD A,A
|
|
0811+++8EFA~ LD L,A
|
|
0812+++8EFA~ LD H,0
|
|
0813+++8EFA~ ADD HL,DE
|
|
0814+++8EFA~ LD E,(HL)
|
|
0815+++8EFA~ INC HL
|
|
0816+++8EFA~ LD D,(HL)
|
|
0817+++8EFA~ POP HL
|
|
0818+++8EFA~ SBC HL,DE
|
|
0819+++8EFA~ LD (IX-12+CHP.TnDelt),L
|
|
0820+++8EFA~ LD (IX-12+CHP.TnDelt+1),H
|
|
0821+++8EFA~ POP DE
|
|
0822+++8EFA~ Version EQU $+1
|
|
0823+++8EFA~ LD A,#3E
|
|
0824+++8EFA~ CP 6
|
|
0825+++8EFA~ JR C,OLDPRTM ;Old 3xxx for PT v3.5-
|
|
0826+++8EFA~ PrSlide LD DE,#1111
|
|
0827+++8EFA~ LD (IX-12+CHP.CrTnSl),E
|
|
0828+++8EFA~ LD (IX-12+CHP.CrTnSl+1),D
|
|
0829+++8EFA~ LoStep EQU $+1
|
|
0830+++8EFA~ OLDPRTM LD A,#3E
|
|
0831+++8EFA~ EX AF,AF'
|
|
0832+++8EFA~ JR Z,NOSIG
|
|
0833+++8EFA~ EX DE,HL
|
|
0834+++8EFA~ NOSIG SBC HL,DE
|
|
0835+++8EFA~ JP P,SET_STP
|
|
0836+++8EFA~ CPL
|
|
0837+++8EFA~ EX AF,AF'
|
|
0838+++8EFA~ NEG
|
|
0839+++8EFA~ EX AF,AF'
|
|
0840+++8EFA~ SET_STP LD (IX-12+CHP.TSlStp+1),A
|
|
0841+++8EFA~ EX AF,AF'
|
|
0842+++8EFA~ LD (IX-12+CHP.TSlStp),A
|
|
0843+++8EFA~ LD (IX-12+CHP.COnOff),0
|
|
0844+++8EFA~ RET
|
|
0845+++8EFA~ 0846+++8EFA~ C_GLISS SET 2,(IX-12+CHP.Flags)
|
|
0847+++8EFA~ LD A,(BC)
|
|
0848+++8EFA~ INC BC
|
|
0849+++8EFA~ LD (IX-12+CHP.TnSlDl),A
|
|
0850+++8EFA~ AND A
|
|
0851+++8EFA~ JR NZ,GL36
|
|
0852+++8EFA~ LD A,(Version) ;AlCo PT3.7+
|
|
0853+++8EFA~ CP 7
|
|
0854+++8EFA~ SBC A,A
|
|
0855+++8EFA~ INC A
|
|
0856+++8EFA~ GL36 LD (IX-12+CHP.TSlCnt),A
|
|
0857+++8EFA~ LD A,(BC)
|
|
0858+++8EFA~ INC BC
|
|
0859+++8EFA~ EX AF,AF'
|
|
0860+++8EFA~ LD A,(BC)
|
|
0861+++8EFA~ INC BC
|
|
0862+++8EFA~ JR SET_STP
|
|
0863+++8EFA~ 0864+++8EFA~ C_SMPOS LD A,(BC)
|
|
0865+++8EFA~ INC BC
|
|
0866+++8EFA~ LD (IX-12+CHP.PsInSm),A
|
|
0867+++8EFA~ RET
|
|
0868+++8EFA~ 0869+++8EFA~ C_ORPOS LD A,(BC)
|
|
0870+++8EFA~ INC BC
|
|
0871+++8EFA~ LD (IX-12+CHP.PsInOr),A
|
|
0872+++8EFA~ RET
|
|
0873+++8EFA~ 0874+++8EFA~ C_VIBRT LD A,(BC)
|
|
0875+++8EFA~ INC BC
|
|
0876+++8EFA~ LD (IX-12+CHP.OnOffD),A
|
|
0877+++8EFA~ LD (IX-12+CHP.COnOff),A
|
|
0878+++8EFA~ LD A,(BC)
|
|
0879+++8EFA~ INC BC
|
|
0880+++8EFA~ LD (IX-12+CHP.OffOnD),A
|
|
0881+++8EFA~ XOR A
|
|
0882+++8EFA~ LD (IX-12+CHP.TSlCnt),A
|
|
0883+++8EFA~ LD (IX-12+CHP.CrTnSl),A
|
|
0884+++8EFA~ LD (IX-12+CHP.CrTnSl+1),A
|
|
0885+++8EFA~ RET
|
|
0886+++8EFA~ 0887+++8EFA~ C_ENGLS LD A,(BC)
|
|
0888+++8EFA~ INC BC
|
|
0889+++8EFA~ LD (IY-100+VRS.Env_Del),A
|
|
0890+++8EFA~ LD (IY-100+VRS.CurEDel),A
|
|
0891+++8EFA~ LD A,(BC)
|
|
0892+++8EFA~ INC BC
|
|
0893+++8EFA~ LD L,A
|
|
0894+++8EFA~ LD A,(BC)
|
|
0895+++8EFA~ INC BC
|
|
0896+++8EFA~ LD H,A
|
|
0897+++8EFA~ LD (IY-100+VRS.ESldAdd),L
|
|
0898+++8EFA~ LD (IY-100+VRS.ESldAdd+1),H
|
|
0899+++8EFA~ RET
|
|
0900+++8EFA~ 0901+++8EFA~ C_DELAY LD A,(BC)
|
|
0902+++8EFA~ INC BC
|
|
0903+++8EFA~ LD (IY-100+VRS.Delay),A
|
|
0904+++8EFA~ LD HL,VARS2+VRS.ModNum ;if AlCo_TS
|
|
0905+++8EFA~ BIT 1,(HL)
|
|
0906+++8EFA~ RET Z
|
|
0907+++8EFA~ LD (VARS1+VRS.Delay),A
|
|
0908+++8EFA~ LD (VARS1+VRS.DelyCnt),A
|
|
0909+++8EFA~ LD (VARS2+VRS.Delay),A
|
|
0910+++8EFA~ RET
|
|
0911+++8EFA~
|
|
0912+++8EFA~ SETENV LD (IX-12+CHP.Env_En),E
|
|
0913+++8EFA~ LD (IY-100+VRS.AYREGS+EnvTp),A
|
|
0914+++8EFA~ LD A,(BC)
|
|
0915+++8EFA~ INC BC
|
|
0916+++8EFA~ LD H,A
|
|
0917+++8EFA~ LD A,(BC)
|
|
0918+++8EFA~ INC BC
|
|
0919+++8EFA~ LD L,A
|
|
0920+++8EFA~ CALL SETENBS
|
|
0921+++8EFA~ XOR A
|
|
0922+++8EFA~ LD (IX-12+CHP.PsInOr),A
|
|
0923+++8EFA~ LD (IY-100+VRS.CurEDel),A
|
|
0924+++8EFA~ LD H,A
|
|
0925+++8EFA~ LD L,A
|
|
0926+++8EFA~ JP SETESLD
|
|
0927+++8EFA~ 0928+++8EFA~ SETORN ADD A,A
|
|
0929+++8EFA~ LD E,A
|
|
0930+++8EFA~ LD D,0
|
|
0931+++8EFA~ LD (IX-12+CHP.PsInOr),D
|
|
0932+++8EFA~ LD L,(IY-100+VRS.OrnPtrs)
|
|
0933+++8EFA~ LD H,(IY-100+VRS.OrnPtrs+1)
|
|
0934+++8EFA~ ADD HL,DE
|
|
0935+++8EFA~ LD E,(HL)
|
|
0936+++8EFA~ INC HL
|
|
0937+++8EFA~ LD D,(HL)
|
|
0938+++8EFA~ LD L,(IY-100+VRS.MODADDR)
|
|
0939+++8EFA~ LD H,(IY-100+VRS.MODADDR+1)
|
|
0940+++8EFA~ ADD HL,DE
|
|
0941+++8EFA~ LD (IX-12+CHP.OrnPtr),L
|
|
0942+++8EFA~ LD (IX-12+CHP.OrnPtr+1),H
|
|
0943+++8EFA~ C_NOP RET
|
|
0944+++8EFA~ 0945+++8EFA~ SETSAM ADD A,A
|
|
0946+++8EFA~ LD E,A
|
|
0947+++8EFA~ LD D,0
|
|
0948+++8EFA~ LD L,(IY-100+VRS.SamPtrs);
|
|
0949+++8EFA~ LD H,(IY-100+VRS.SamPtrs+1);
|
|
0950+++8EFA~ ADD HL,DE
|
|
0951+++8EFA~ LD E,(HL)
|
|
0952+++8EFA~ INC HL
|
|
0953+++8EFA~ LD D,(HL)
|
|
0954+++8EFA~ LD L,(IY-100+VRS.MODADDR)
|
|
0955+++8EFA~ LD H,(IY-100+VRS.MODADDR+1)
|
|
0956+++8EFA~ ADD HL,DE
|
|
0957+++8EFA~ LD (IX-12+CHP.SamPtr),L
|
|
0958+++8EFA~ LD (IX-12+CHP.SamPtr+1),H
|
|
0959+++8EFA~ RET
|
|
0960+++8EFA~ 0961+++8EFA~ ;ALL 16 ADDRESSES TO PROTECT FROM BROKEN PT3 MODULES
|
|
0962+++8EFA~ SPCCOMS DW C_NOP
|
|
0963+++8EFA~ DW C_GLISS
|
|
0964+++8EFA~ DW C_PORTM
|
|
0965+++8EFA~ DW C_SMPOS
|
|
0966+++8EFA~ DW C_ORPOS
|
|
0967+++8EFA~ DW C_VIBRT
|
|
0968+++8EFA~ DW C_NOP
|
|
0969+++8EFA~ DW C_NOP
|
|
0970+++8EFA~ DW C_ENGLS
|
|
0971+++8EFA~ DW C_DELAY
|
|
0972+++8EFA~ DW C_NOP
|
|
0973+++8EFA~ DW C_NOP
|
|
0974+++8EFA~ DW C_NOP
|
|
0975+++8EFA~ DW C_NOP
|
|
0976+++8EFA~ DW C_NOP
|
|
0977+++8EFA~ DW C_NOP
|
|
0978+++8EFA~ 0979+++8EFA~ CHREGS CALL GETIX
|
|
0980+++8EFA~ XOR A
|
|
0981+++8EFA~ LD (Ampl),A
|
|
0982+++8EFA~ BIT 0,(IX+CHP.Flags)
|
|
0983+++8EFA~ PUSH HL
|
|
0984+++8EFA~ JP Z,CH_EXIT
|
|
0985+++8EFA~ LD (CSP_+1),SP
|
|
0986+++8EFA~ LD L,(IX+CHP.OrnPtr)
|
|
0987+++8EFA~ LD H,(IX+CHP.OrnPtr+1)
|
|
0988+++8EFA~ LD SP,HL
|
|
0989+++8EFA~ POP DE
|
|
0990+++8EFA~ LD H,A
|
|
0991+++8EFA~ LD A,(IX+CHP.PsInOr)
|
|
0992+++8EFA~ LD L,A
|
|
0993+++8EFA~ ADD HL,SP
|
|
0994+++8EFA~ INC A
|
|
0995+++8EFA~ ;PT2 PT3
|
|
0996+++8EFA~ OrnCP INC A ;CP E CP D
|
|
0997+++8EFA~ JR C,CH_ORPS
|
|
0998+++8EFA~ OrnLD DB 1 ;LD A,D LD A,E
|
|
0999+++8EFA~ CH_ORPS LD (IX+CHP.PsInOr),A
|
|
1000+++8EFA~ LD A,(IX+CHP.Note)
|
|
1001+++8EFA~ ADD A,(HL)
|
|
1002+++8EFA~ JP P,CH_NTP
|
|
1003+++8EFA~ XOR A
|
|
1004+++8EFA~ CH_NTP CP 96
|
|
1005+++8EFA~ JR C,CH_NOK
|
|
1006+++8EFA~ LD A,95
|
|
1007+++8EFA~ CH_NOK ADD A,A
|
|
1008+++8EFA~ EX AF,AF'
|
|
1009+++8EFA~ LD L,(IX+CHP.SamPtr)
|
|
1010+++8EFA~ LD H,(IX+CHP.SamPtr+1)
|
|
1011+++8EFA~ LD SP,HL
|
|
1012+++8EFA~ POP DE
|
|
1013+++8EFA~ LD H,0
|
|
1014+++8EFA~ LD A,(IX+CHP.PsInSm)
|
|
1015+++8EFA~ LD B,A
|
|
1016+++8EFA~ ADD A,A
|
|
1017+++8EFA~ SamClc2 ADD A,A ;or ADD A,B for PT2
|
|
1018+++8EFA~ LD L,A
|
|
1019+++8EFA~ ADD HL,SP
|
|
1020+++8EFA~ LD SP,HL
|
|
1021+++8EFA~ LD A,B
|
|
1022+++8EFA~ INC A
|
|
1023+++8EFA~ ;PT2 PT3
|
|
1024+++8EFA~ SamCP INC A ;CP E CP D
|
|
1025+++8EFA~ JR C,CH_SMPS
|
|
1026+++8EFA~ SamLD DB 1 ;LD A,D LD A,E
|
|
1027+++8EFA~ CH_SMPS LD (IX+CHP.PsInSm),A
|
|
1028+++8EFA~ POP BC
|
|
1029+++8EFA~ POP HL
|
|
1030+++8EFA~ 1031+++8EFA~ ;Convert PT2 sample to PT3
|
|
1032+++8EFA~ ;PT2 PT3
|
|
1033+++8EFA~ SamCnv POP HL ;BIT 2,C JR e_
|
|
1034+++8EFA~ POP HL
|
|
1035+++8EFA~ LD H,B
|
|
1036+++8EFA~ JR NZ,$+8
|
|
1037+++8EFA~ EX DE,HL
|
|
1038+++8EFA~ AND A
|
|
1039+++8EFA~ SBC HL,HL
|
|
1040+++8EFA~ SBC HL,DE
|
|
1041+++8EFA~ LD D,C
|
|
1042+++8EFA~ RR C
|
|
1043+++8EFA~ SBC A,A
|
|
1044+++8EFA~ CPL
|
|
1045+++8EFA~ AND #3E
|
|
1046+++8EFA~ RR C
|
|
1047+++8EFA~ RR B
|
|
1048+++8EFA~ AND C
|
|
1049+++8EFA~ LD C,A
|
|
1050+++8EFA~ LD A,B
|
|
1051+++8EFA~ RRA
|
|
1052+++8EFA~ RRA
|
|
1053+++8EFA~ RR D
|
|
1054+++8EFA~ RRA
|
|
1055+++8EFA~ AND #9F
|
|
1056+++8EFA~ LD B,A
|
|
1057+++8EFA~ 1058+++8EFA~ e_ LD E,(IX+CHP.TnAcc)
|
|
1059+++8EFA~ LD D,(IX+CHP.TnAcc+1)
|
|
1060+++8EFA~ ADD HL,DE
|
|
1061+++8EFA~ BIT 6,B
|
|
1062+++8EFA~ JR Z,CH_NOAC
|
|
1063+++8EFA~ LD (IX+CHP.TnAcc),L
|
|
1064+++8EFA~ LD (IX+CHP.TnAcc+1),H
|
|
1065+++8EFA~ CH_NOAC EX DE,HL
|
|
1066+++8EFA~ EX AF,AF'
|
|
1067+++8EFA~ ADD A,NT_&255
|
|
1068+++8EFA~ LD L,A
|
|
1069+++8EFA~ ADC A,NT_/256
|
|
1070+++8EFA~ SUB L
|
|
1071+++8EFA~ LD H,A
|
|
1072+++8EFA~ LD SP,HL
|
|
1073+++8EFA~ POP HL
|
|
1074+++8EFA~ ADD HL,DE
|
|
1075+++8EFA~ LD E,(IX+CHP.CrTnSl)
|
|
1076+++8EFA~ LD D,(IX+CHP.CrTnSl+1)
|
|
1077+++8EFA~ ADD HL,DE
|
|
1078+++8EFA~ CSP_ LD SP,#3131
|
|
1079+++8EFA~ EX (SP),HL
|
|
1080+++8EFA~ XOR A
|
|
1081+++8EFA~ OR (IX+CHP.TSlCnt)
|
|
1082+++8EFA~ JR Z,CH_AMP
|
|
1083+++8EFA~ DEC (IX+CHP.TSlCnt)
|
|
1084+++8EFA~ JR NZ,CH_AMP
|
|
1085+++8EFA~ LD A,(IX+CHP.TnSlDl)
|
|
1086+++8EFA~ LD (IX+CHP.TSlCnt),A
|
|
1087+++8EFA~ LD L,(IX+CHP.TSlStp)
|
|
1088+++8EFA~ LD H,(IX+CHP.TSlStp+1)
|
|
1089+++8EFA~ LD A,H
|
|
1090+++8EFA~ ADD HL,DE
|
|
1091+++8EFA~ LD (IX+CHP.CrTnSl),L
|
|
1092+++8EFA~ LD (IX+CHP.CrTnSl+1),H
|
|
1093+++8EFA~ BIT 2,(IX+CHP.Flags)
|
|
1094+++8EFA~ JR NZ,CH_AMP
|
|
1095+++8EFA~ LD E,(IX+CHP.TnDelt)
|
|
1096+++8EFA~ LD D,(IX+CHP.TnDelt+1)
|
|
1097+++8EFA~ AND A
|
|
1098+++8EFA~ JR Z,CH_STPP
|
|
1099+++8EFA~ EX DE,HL
|
|
1100+++8EFA~ CH_STPP SBC HL,DE
|
|
1101+++8EFA~ JP M,CH_AMP
|
|
1102+++8EFA~ LD A,(IX+CHP.SlToNt)
|
|
1103+++8EFA~ LD (IX+CHP.Note),A
|
|
1104+++8EFA~ XOR A
|
|
1105+++8EFA~ LD (IX+CHP.TSlCnt),A
|
|
1106+++8EFA~ LD (IX+CHP.CrTnSl),A
|
|
1107+++8EFA~ LD (IX+CHP.CrTnSl+1),A
|
|
1108+++8EFA~ CH_AMP LD A,(IX+CHP.CrAmSl)
|
|
1109+++8EFA~ BIT 7,C
|
|
1110+++8EFA~ JR Z,CH_NOAM
|
|
1111+++8EFA~ BIT 6,C
|
|
1112+++8EFA~ JR Z,CH_AMIN
|
|
1113+++8EFA~ CP 15
|
|
1114+++8EFA~ JR Z,CH_NOAM
|
|
1115+++8EFA~ INC A
|
|
1116+++8EFA~ JR CH_SVAM
|
|
1117+++8EFA~ CH_AMIN CP -15
|
|
1118+++8EFA~ JR Z,CH_NOAM
|
|
1119+++8EFA~ DEC A
|
|
1120+++8EFA~ CH_SVAM LD (IX+CHP.CrAmSl),A
|
|
1121+++8EFA~ CH_NOAM LD L,A
|
|
1122+++8EFA~ LD A,B
|
|
1123+++8EFA~ AND 15
|
|
1124+++8EFA~ ADD A,L
|
|
1125+++8EFA~ JP P,CH_APOS
|
|
1126+++8EFA~ XOR A
|
|
1127+++8EFA~ CH_APOS CP 16
|
|
1128+++8EFA~ JR C,CH_VOL
|
|
1129+++8EFA~ LD A,15
|
|
1130+++8EFA~ CH_VOL OR (IX+CHP.Volume)
|
|
1131+++8EFA~ ADD A,VT_&255
|
|
1132+++8EFA~ LD L,A
|
|
1133+++8EFA~ ADC A,VT_/256
|
|
1134+++8EFA~ SUB L
|
|
1135+++8EFA~ LD H,A
|
|
1136+++8EFA~ LD A,(HL)
|
|
1137+++8EFA~ CH_ENV BIT 0,C
|
|
1138+++8EFA~ JR NZ,CH_NOEN
|
|
1139+++8EFA~ OR (IX+CHP.Env_En)
|
|
1140+++8EFA~ CH_NOEN LD (Ampl),A
|
|
1141+++8EFA~ BIT 7,B
|
|
1142+++8EFA~ LD A,C
|
|
1143+++8EFA~ JR Z,NO_ENSL
|
|
1144+++8EFA~ RLA
|
|
1145+++8EFA~ RLA
|
|
1146+++8EFA~ SRA A
|
|
1147+++8EFA~ SRA A
|
|
1148+++8EFA~ SRA A
|
|
1149+++8EFA~ ADD A,(IX+CHP.CrEnSl) ;SEE COMMENT BELOW
|
|
1150+++8EFA~ BIT 5,B
|
|
1151+++8EFA~ JR Z,NO_ENAC
|
|
1152+++8EFA~ LD (IX+CHP.CrEnSl),A
|
|
1153+++8EFA~ NO_ENAC ADD A,(IY-100+VRS.AddToEn) ;BUG IN PT3 - NEED WORD HERE
|
|
1154+++8EFA~ LD (IY-100+VRS.AddToEn),A
|
|
1155+++8EFA~ JR CH_MIX
|
|
1156+++8EFA~ NO_ENSL RRA
|
|
1157+++8EFA~ ADD A,(IX+CHP.CrNsSl)
|
|
1158+++8EFA~ LD (IY-100+VRS.AddToNs),A
|
|
1159+++8EFA~ BIT 5,B
|
|
1160+++8EFA~ JR Z,CH_MIX
|
|
1161+++8EFA~ LD (IX+CHP.CrNsSl),A
|
|
1162+++8EFA~ CH_MIX LD A,B
|
|
1163+++8EFA~ RRA
|
|
1164+++8EFA~ AND #48
|
|
1165+++8EFA~ CH_EXIT OR (IY-100+VRS.AYREGS+Mixer)
|
|
1166+++8EFA~ RRCA
|
|
1167+++8EFA~ LD (IY-100+VRS.AYREGS+Mixer),A
|
|
1168+++8EFA~ POP HL
|
|
1169+++8EFA~ XOR A
|
|
1170+++8EFA~ OR (IX+CHP.COnOff)
|
|
1171+++8EFA~ RET Z
|
|
1172+++8EFA~ DEC (IX+CHP.COnOff)
|
|
1173+++8EFA~ RET NZ
|
|
1174+++8EFA~ XOR (IX+CHP.Flags)
|
|
1175+++8EFA~ LD (IX+CHP.Flags),A
|
|
1176+++8EFA~ RRA
|
|
1177+++8EFA~ LD A,(IX+CHP.OnOffD)
|
|
1178+++8EFA~ JR C,CH_ONDL
|
|
1179+++8EFA~ LD A,(IX+CHP.OffOnD)
|
|
1180+++8EFA~ CH_ONDL LD (IX+CHP.COnOff),A
|
|
1181+++8EFA~ RET
|
|
1182+++8EFA~ 1183+++8EFA~ PLAY_ XOR A
|
|
1184+++8EFA~ LD (IY-100+VRS.AddToEn),A
|
|
1185+++8EFA~ LD (IY-100+VRS.AYREGS+Mixer),A
|
|
1186+++8EFA~ DEC A
|
|
1187+++8EFA~ LD (IY-100+VRS.AYREGS+EnvTp),A
|
|
1188+++8EFA~ DEC (IY-100+VRS.DelyCnt)
|
|
1189+++8EFA~ JP NZ,PL2
|
|
1190+++8EFA~ DEC (IY-100+VRS.ChanA+CHP.NtSkCn)
|
|
1191+++8EFA~ JR NZ,PL1B
|
|
1192+++8EFA~ LD C,(IY-100+VRS.AdInPtA)
|
|
1193+++8EFA~ LD B,(IY-100+VRS.AdInPtA+1)
|
|
1194+++8EFA~ LD A,(BC)
|
|
1195+++8EFA~ AND A
|
|
1196+++8EFA~ JR NZ,PL1A
|
|
1197+++8EFA~ LD D,A
|
|
1198+++8EFA~ LD (IY-100+VRS.Ns_Base),A
|
|
1199+++8EFA~ LD L,(IY-100+VRS.CrPsPtr)
|
|
1200+++8EFA~ LD H,(IY-100+VRS.CrPsPtr+1)
|
|
1201+++8EFA~ INC HL
|
|
1202+++8EFA~ LD A,(HL)
|
|
1203+++8EFA~ INC A
|
|
1204+++8EFA~ JR NZ,PLNLP
|
|
1205+++8EFA~ 1206+++8EFA~ IF LoopChecker
|
|
1207+++8EFA~ CALL CHECKLP
|
|
1208+++8EFA~ ENDIF
|
|
1209+++8EFA~ 1210+++8EFA~ LD L,(IY-100+VRS.LPosPtr)
|
|
1211+++8EFA~ LD H,(IY-100+VRS.LPosPtr+1)
|
|
1212+++8EFA~ LD A,(HL)
|
|
1213+++8EFA~ INC A
|
|
1214+++8EFA~ PLNLP CALL SETCPPT
|
|
1215+++8EFA~ DEC A
|
|
1216+++8EFA~ BIT 1,(IY-100+VRS.ModNum)
|
|
1217+++8EFA~ JR Z,NoAlCo
|
|
1218+++8EFA~ TSSub EQU $+1
|
|
1219+++8EFA~ SUB #D6
|
|
1220+++8EFA~ CPL
|
|
1221+++8EFA~ NoAlCo
|
|
1222+++8EFA~ ;PT2 PT3
|
|
1223+++8EFA~ PsCalc DEC A ;ADD A,A NOP
|
|
1224+++8EFA~ DEC A ;ADD A,(HL) NOP
|
|
1225+++8EFA~ ADD A,A
|
|
1226+++8EFA~ LD E,A
|
|
1227+++8EFA~ RL D
|
|
1228+++8EFA~ 1229+++8EFA~ IF CurPosCounter
|
|
1230+++8EFA~ LD A,L
|
|
1231+++8EFA~ SUB (IY-100+VRS.PosSub)
|
|
1232+++8EFA~ LD (IY-100+VRS.CurPos),A
|
|
1233+++8EFA~ ENDIF
|
|
1234+++8EFA~ 1235+++8EFA~ LD L,(IY-100+VRS.PatsPtr)
|
|
1236+++8EFA~ LD H,(IY-100+VRS.PatsPtr+1)
|
|
1237+++8EFA~ ADD HL,DE
|
|
1238+++8EFA~ LD E,(IY-100+VRS.MODADDR)
|
|
1239+++8EFA~ LD D,(IY-100+VRS.MODADDR+1)
|
|
1240+++8EFA~ LD (PSP_+1),SP
|
|
1241+++8EFA~ LD SP,HL
|
|
1242+++8EFA~ POP HL
|
|
1243+++8EFA~ ADD HL,DE
|
|
1244+++8EFA~ LD B,H
|
|
1245+++8EFA~ LD C,L
|
|
1246+++8EFA~ POP HL
|
|
1247+++8EFA~ ADD HL,DE
|
|
1248+++8EFA~ LD (IY-100+VRS.AdInPtB),L
|
|
1249+++8EFA~ LD (IY-100+VRS.AdInPtB+1),H
|
|
1250+++8EFA~ POP HL
|
|
1251+++8EFA~ ADD HL,DE
|
|
1252+++8EFA~ LD (IY-100+VRS.AdInPtC),L
|
|
1253+++8EFA~ LD (IY-100+VRS.AdInPtC+1),H
|
|
1254+++8EFA~ PSP_ LD SP,#3131
|
|
1255+++8EFA~ PL1A LD DE,VRS.ChanA+12-100
|
|
1256+++8EFA~ CALL PTDECOD
|
|
1257+++8EFA~ LD (IY-100+VRS.AdInPtA),C
|
|
1258+++8EFA~ LD (IY-100+VRS.AdInPtA+1),B
|
|
1259+++8EFA~ 1260+++8EFA~ PL1B DEC (IY-100+VRS.ChanB+CHP.NtSkCn)
|
|
1261+++8EFA~ JR NZ,PL1C
|
|
1262+++8EFA~ LD DE,VRS.ChanB+12-100
|
|
1263+++8EFA~ LD C,(IY-100+VRS.AdInPtB)
|
|
1264+++8EFA~ LD B,(IY-100+VRS.AdInPtB+1)
|
|
1265+++8EFA~ CALL PTDECOD
|
|
1266+++8EFA~ LD (IY-100+VRS.AdInPtB),C
|
|
1267+++8EFA~ LD (IY-100+VRS.AdInPtB+1),B
|
|
1268+++8EFA~ 1269+++8EFA~ PL1C DEC (IY-100+VRS.ChanC+CHP.NtSkCn)
|
|
1270+++8EFA~ JR NZ,PL1D
|
|
1271+++8EFA~ LD DE,VRS.ChanC+12-100
|
|
1272+++8EFA~ LD C,(IY-100+VRS.AdInPtC)
|
|
1273+++8EFA~ LD B,(IY-100+VRS.AdInPtC+1)
|
|
1274+++8EFA~ CALL PTDECOD
|
|
1275+++8EFA~ LD (IY-100+VRS.AdInPtC),C
|
|
1276+++8EFA~ LD (IY-100+VRS.AdInPtC+1),B
|
|
1277+++8EFA~ 1278+++8EFA~ PL1D LD A,(IY-100+VRS.Delay)
|
|
1279+++8EFA~ LD (IY-100+VRS.DelyCnt),A
|
|
1280+++8EFA~ 1281+++8EFA~ PL2 LD DE,VRS.ChanA-100
|
|
1282+++8EFA~ LD L,(IY-100+VRS.AYREGS+TonA)
|
|
1283+++8EFA~ LD H,(IY-100+VRS.AYREGS+TonA+1)
|
|
1284+++8EFA~ CALL CHREGS
|
|
1285+++8EFA~ LD (IY-100+VRS.AYREGS+TonA),L
|
|
1286+++8EFA~ LD (IY-100+VRS.AYREGS+TonA+1),H
|
|
1287+++8EFA~ Ampl EQU $+1
|
|
1288+++8EFA~ LD A,#3E
|
|
1289+++8EFA~ LD (IY-100+VRS.AYREGS+AmplA),A
|
|
1290+++8EFA~ LD DE,VRS.ChanB-100
|
|
1291+++8EFA~ LD L,(IY-100+VRS.AYREGS+TonB)
|
|
1292+++8EFA~ LD H,(IY-100+VRS.AYREGS+TonB+1)
|
|
1293+++8EFA~ CALL CHREGS
|
|
1294+++8EFA~ LD (IY-100+VRS.AYREGS+TonB),L
|
|
1295+++8EFA~ LD (IY-100+VRS.AYREGS+TonB+1),H
|
|
1296+++8EFA~ LD A,(Ampl)
|
|
1297+++8EFA~ LD (IY-100+VRS.AYREGS+AmplB),A
|
|
1298+++8EFA~ LD DE,VRS.ChanC-100
|
|
1299+++8EFA~ LD L,(IY-100+VRS.AYREGS+TonC)
|
|
1300+++8EFA~ LD H,(IY-100+VRS.AYREGS+TonC+1)
|
|
1301+++8EFA~ CALL CHREGS
|
|
1302+++8EFA~ LD (IY-100+VRS.AYREGS+TonC),L
|
|
1303+++8EFA~ LD (IY-100+VRS.AYREGS+TonC+1),H
|
|
1304+++8EFA~ LD A,(Ampl)
|
|
1305+++8EFA~ LD (IY-100+VRS.AYREGS+AmplC),A
|
|
1306+++8EFA~ 1307+++8EFA~ LD A,(IY-100+VRS.Ns_Base)
|
|
1308+++8EFA~ ADD (IY-100+VRS.AddToNs)
|
|
1309+++8EFA~ LD (IY-100+VRS.AYREGS+Noise),A
|
|
1310+++8EFA~ 1311+++8EFA~ LD A,(IY-100+VRS.AddToEn)
|
|
1312+++8EFA~ LD E,A
|
|
1313+++8EFA~ ADD A,A
|
|
1314+++8EFA~ SBC A,A
|
|
1315+++8EFA~ LD D,A
|
|
1316+++8EFA~ LD L,(IY-100+VRS.EnvBase)
|
|
1317+++8EFA~ LD H,(IY-100+VRS.EnvBase+1)
|
|
1318+++8EFA~ ADD HL,DE
|
|
1319+++8EFA~ LD E,(IY-100+VRS.CurESld)
|
|
1320+++8EFA~ LD D,(IY-100+VRS.CurESld+1)
|
|
1321+++8EFA~ ADD HL,DE
|
|
1322+++8EFA~ LD (IY-100+VRS.AYREGS+Env),L
|
|
1323+++8EFA~ LD (IY-100+VRS.AYREGS+Env+1),H
|
|
1324+++8EFA~ 1325+++8EFA~ XOR A
|
|
1326+++8EFA~ OR (IY-100+VRS.CurEDel)
|
|
1327+++8EFA~ RET Z
|
|
1328+++8EFA~ DEC (IY-100+VRS.CurEDel)
|
|
1329+++8EFA~ RET NZ
|
|
1330+++8EFA~ LD A,(IY-100+VRS.Env_Del)
|
|
1331+++8EFA~ LD (IY-100+VRS.CurEDel),A
|
|
1332+++8EFA~ LD L,(IY-100+VRS.ESldAdd)
|
|
1333+++8EFA~ LD H,(IY-100+VRS.ESldAdd+1)
|
|
1334+++8EFA~ ADD HL,DE
|
|
1335+++8EFA~ JP SETESLD
|
|
1336+++8EFA~ 1337+++8EFA~ PLAY LD IY,VARS1+100
|
|
1338+++8EFA~ CALL PLAY_
|
|
1339+++8EFA~ LD A,(is_ts)
|
|
1340+++8EFA~ AND A
|
|
1341+++8EFA~ JR Z,PL_nts
|
|
1342+++8EFA~ LD IY,VARS2+100
|
|
1343+++8EFA~ CALL PLAY_
|
|
1344+++8EFA~ PL_nts
|
|
1345+++8EFA~ IF Basic
|
|
1346+++8EFA~ LD IY,#5C3A
|
|
1347+++8EFA~ ENDIF
|
|
1348+++8EFA~ 1349+++8EFA~ ROUT LD BC,#FFFD
|
|
1350+++8EFA~ LD A,(is_ts)
|
|
1351+++8EFA~ AND A
|
|
1352+++8EFA~ IFDEF ONtfm
|
|
1353+++8EFA~ LD L,#F9
|
|
1354+++8EFA~ OUT (C),L
|
|
1355+++8EFA~ ELSE
|
|
1356+++8EFA~ JR Z,r_nts ;keep old standard
|
|
1357+++8EFA~ OUT (C),B
|
|
1358+++8EFA~ ENDIF
|
|
1359+++8EFA~ r_nts EX AF,AF'
|
|
1360+++8EFA~ 1361+++8EFA~ IF ACBBAC
|
|
1362+++8EFA~ LD IX,VARS1+VRS.AYREGS
|
|
1363+++8EFA~ ELSE
|
|
1364+++8EFA~ LD HL,VARS1+VRS.AYREGS
|
|
1365+++8EFA~ ENDIF
|
|
1366+++8EFA~ 1367+++8EFA~ CALL ROUT_
|
|
1368+++8EFA~ EX AF,AF'
|
|
1369+++8EFA~ RET Z
|
|
1370+++8EFA~ LD B,D
|
|
1371+++8EFA~ 1372+++8EFA~ IFDEF ONtfm
|
|
1373+++8EFA~ LD A,#F8
|
|
1374+++8EFA~ ELSE
|
|
1375+++8EFA~ CPL
|
|
1376+++8EFA~ ENDIF
|
|
1377+++8EFA~ OUT (C),A
|
|
1378+++8EFA~ 1379+++8EFA~ IF ACBBAC
|
|
1380+++8EFA~ LD IX,VARS2+VRS.AYREGS
|
|
1381+++8EFA~ ELSE
|
|
1382+++8EFA~ LD HL,VARS2+VRS.AYREGS
|
|
1383+++8EFA~ ENDIF
|
|
1384+++8EFA~ 1385+++8EFA~ ROUT_
|
|
1386+++8EFA~ IF ACBBAC
|
|
1387+++8EFA~ LD A,(SETUP)
|
|
1388+++8EFA~ AND 12
|
|
1389+++8EFA~ JR Z,ABC
|
|
1390+++8EFA~ ADD A,CHTABLE
|
|
1391+++8EFA~ LD E,A
|
|
1392+++8EFA~ ADC A,CHTABLE/256
|
|
1393+++8EFA~ SUB E
|
|
1394+++8EFA~ LD D,A
|
|
1395+++8EFA~ LD B,0
|
|
1396+++8EFA~ PUSH IX
|
|
1397+++8EFA~ POP HL
|
|
1398+++8EFA~ LD A,(DE)
|
|
1399+++8EFA~ INC DE
|
|
1400+++8EFA~ LD C,A
|
|
1401+++8EFA~ ADD HL,BC
|
|
1402+++8EFA~ LD A,(IX+TonB)
|
|
1403+++8EFA~ LD C,(HL)
|
|
1404+++8EFA~ LD (IX+TonB),C
|
|
1405+++8EFA~ LD (HL),A
|
|
1406+++8EFA~ INC HL
|
|
1407+++8EFA~ LD A,(IX+TonB+1)
|
|
1408+++8EFA~ LD C,(HL)
|
|
1409+++8EFA~ LD (IX+TonB+1),C
|
|
1410+++8EFA~ LD (HL),A
|
|
1411+++8EFA~ LD A,(DE)
|
|
1412+++8EFA~ INC DE
|
|
1413+++8EFA~ LD C,A
|
|
1414+++8EFA~ ADD HL,BC
|
|
1415+++8EFA~ LD A,(IX+AmplB)
|
|
1416+++8EFA~ LD C,(HL)
|
|
1417+++8EFA~ LD (IX+AmplB),C
|
|
1418+++8EFA~ LD (HL),A
|
|
1419+++8EFA~ LD A,(DE)
|
|
1420+++8EFA~ INC DE
|
|
1421+++8EFA~ LD (RxCA1),A
|
|
1422+++8EFA~ XOR 8
|
|
1423+++8EFA~ LD (RxCA2),A
|
|
1424+++8EFA~ LD A,(DE)
|
|
1425+++8EFA~ AND (IX+Mixer)
|
|
1426+++8EFA~ LD E,A
|
|
1427+++8EFA~ LD A,(IX+Mixer)
|
|
1428+++8EFA~ RxCA1 DB #E6
|
|
1429+++8EFA~ AND %010010
|
|
1430+++8EFA~ OR E
|
|
1431+++8EFA~ LD E,A
|
|
1432+++8EFA~ LD A,(IX+Mixer)
|
|
1433+++8EFA~ AND %010010
|
|
1434+++8EFA~ RxCA2 OR E
|
|
1435+++8EFA~ OR E
|
|
1436+++8EFA~ LD (IX+Mixer),A
|
|
1437+++8EFA~ ABC
|
|
1438+++8EFA~ ENDIF
|
|
1439+++8EFA~ 1440+++8EFA~ XOR A
|
|
1441+++8EFA~ LD DE,#FFBF
|
|
1442+++8EFA~ 1443+++8EFA~ IF ACBBAC
|
|
1444+++8EFA~ LD BC,#FFFD
|
|
1445+++8EFA~ PUSH IX
|
|
1446+++8EFA~ POP HL
|
|
1447+++8EFA~ ENDIF
|
|
1448+++8EFA~ 1449+++8EFA~ LOUT
|
|
1450+++8EFA~ IFDEF ONtfm
|
|
1451+++8EFA~ INF
|
|
1452+++8EFA~ JP M,$-2
|
|
1453+++8EFA~ ENDIF
|
|
1454+++8EFA~ OUT (C),A
|
|
1455+++8EFA~ IFDEF ONtfm
|
|
1456+++8EFA~ INF
|
|
1457+++8EFA~ JP M,$-2
|
|
1458+++8EFA~ ENDIF
|
|
1459+++8EFA~ LD B,E
|
|
1460+++8EFA~ OUTI
|
|
1461+++8EFA~ LD B,D
|
|
1462+++8EFA~ INC A
|
|
1463+++8EFA~ CP 13
|
|
1464+++8EFA~ JR NZ,LOUT
|
|
1465+++8EFA~ IFDEF ONtfm
|
|
1466+++8EFA~ INF
|
|
1467+++8EFA~ JP M,$-2
|
|
1468+++8EFA~ ENDIF
|
|
1469+++8EFA~ OUT (C),A
|
|
1470+++8EFA~ LD A,(HL)
|
|
1471+++8EFA~ AND A
|
|
1472+++8EFA~ RET M
|
|
1473+++8EFA~ IFDEF ONtfm
|
|
1474+++8EFA~ INF
|
|
1475+++8EFA~ JP M,$-2
|
|
1476+++8EFA~ ENDIF
|
|
1477+++8EFA~ LD B,E
|
|
1478+++8EFA~ OUT (C),A
|
|
1479+++8EFA~ RET
|
|
1480+++8EFA~ 1481+++8EFA~ IF ACBBAC
|
|
1482+++8EFA~ CHTABLE EQU $-4
|
|
1483+++8EFA~ DB 4,5,15,%001001,0,7,7,%100100
|
|
1484+++8EFA~ ENDIF
|
|
1485+++8EFA~ 1486+++8EFA~ NT_DATA DB (T_NEW_0-T1_)*2
|
|
1487+++8EFA~ DB TCNEW_0-T_
|
|
1488+++8EFA~ DB (T_OLD_0-T1_)*2+1
|
|
1489+++8EFA~ DB TCOLD_0-T_
|
|
1490+++8EFA~ DB (T_NEW_1-T1_)*2+1
|
|
1491+++8EFA~ DB TCNEW_1-T_
|
|
1492+++8EFA~ DB (T_OLD_1-T1_)*2+1
|
|
1493+++8EFA~ DB TCOLD_1-T_
|
|
1494+++8EFA~ DB (T_NEW_2-T1_)*2
|
|
1495+++8EFA~ DB TCNEW_2-T_
|
|
1496+++8EFA~ DB (T_OLD_2-T1_)*2
|
|
1497+++8EFA~ DB TCOLD_2-T_
|
|
1498+++8EFA~ DB (T_NEW_3-T1_)*2
|
|
1499+++8EFA~ DB TCNEW_3-T_
|
|
1500+++8EFA~ DB (T_OLD_3-T1_)*2
|
|
1501+++8EFA~ DB TCOLD_3-T_
|
|
1502+++8EFA~ 1503+++8EFA~ T_
|
|
1504+++8EFA~ 1505+++8EFA~ TCOLD_0 DB #00+1,#04+1,#08+1,#0A+1,#0C+1,#0E+1,#12+1,#14+1
|
|
1506+++8EFA~ DB #18+1,#24+1,#3C+1,0
|
|
1507+++8EFA~ TCOLD_1 DB #5C+1,0
|
|
1508+++8EFA~ TCOLD_2 DB #30+1,#36+1,#4C+1,#52+1,#5E+1,#70+1,#82,#8C,#9C
|
|
1509+++8EFA~ DB #9E,#A0,#A6,#A8,#AA,#AC,#AE,#AE,0
|
|
1510+++8EFA~ TCNEW_3 DB #56+1
|
|
1511+++8EFA~ TCOLD_3 DB #1E+1,#22+1,#24+1,#28+1,#2C+1,#2E+1,#32+1,#BE+1,0
|
|
1512+++8EFA~ TCNEW_0 DB #1C+1,#20+1,#22+1,#26+1,#2A+1,#2C+1,#30+1,#54+1
|
|
1513+++8EFA~ DB #BC+1,#BE+1,0
|
|
1514+++8EFA~ TCNEW_1 EQU TCOLD_1
|
|
1515+++8EFA~ TCNEW_2 DB #1A+1,#20+1,#24+1,#28+1,#2A+1,#3A+1,#4C+1,#5E+1
|
|
1516+++8EFA~ DB #BA+1,#BC+1,#BE+1,0
|
|
1517+++8EFA~ 1518+++8EFA~ PT3EMPTYORN EQU $-1
|
|
1519+++8EFA~ DB 1,0
|
|
1520+++8EFA~ 1521+++8EFA~ ;first 12 values of tone tables (packed)
|
|
1522+++8EFA~ 1523+++8EFA~ T_PACK DB #06EC*2/256,#06EC*2&255
|
|
1524+++8EFA~ DB #0755-#06EC
|
|
1525+++8EFA~ DB #07C5-#0755
|
|
1526+++8EFA~ DB #083B-#07C5
|
|
1527+++8EFA~ DB #08B8-#083B
|
|
1528+++8EFA~ DB #093D-#08B8
|
|
1529+++8EFA~ DB #09CA-#093D
|
|
1530+++8EFA~ DB #0A5F-#09CA
|
|
1531+++8EFA~ DB #0AFC-#0A5F
|
|
1532+++8EFA~ DB #0BA4-#0AFC
|
|
1533+++8EFA~ DB #0C55-#0BA4
|
|
1534+++8EFA~ DB #0D10-#0C55
|
|
1535+++8EFA~ DB #066D*2/256,#066D*2&255
|
|
1536+++8EFA~ DB #06CF-#066D
|
|
1537+++8EFA~ DB #0737-#06CF
|
|
1538+++8EFA~ DB #07A4-#0737
|
|
1539+++8EFA~ DB #0819-#07A4
|
|
1540+++8EFA~ DB #0894-#0819
|
|
1541+++8EFA~ DB #0917-#0894
|
|
1542+++8EFA~ DB #09A1-#0917
|
|
1543+++8EFA~ DB #0A33-#09A1
|
|
1544+++8EFA~ DB #0ACF-#0A33
|
|
1545+++8EFA~ DB #0B73-#0ACF
|
|
1546+++8EFA~ DB #0C22-#0B73
|
|
1547+++8EFA~ DB #0CDA-#0C22
|
|
1548+++8EFA~ DB #0704*2/256,#0704*2&255
|
|
1549+++8EFA~ DB #076E-#0704
|
|
1550+++8EFA~ DB #07E0-#076E
|
|
1551+++8EFA~ DB #0858-#07E0
|
|
1552+++8EFA~ DB #08D6-#0858
|
|
1553+++8EFA~ DB #095C-#08D6
|
|
1554+++8EFA~ DB #09EC-#095C
|
|
1555+++8EFA~ DB #0A82-#09EC
|
|
1556+++8EFA~ DB #0B22-#0A82
|
|
1557+++8EFA~ DB #0BCC-#0B22
|
|
1558+++8EFA~ DB #0C80-#0BCC
|
|
1559+++8EFA~ DB #0D3E-#0C80
|
|
1560+++8EFA~ DB #07E0*2/256,#07E0*2&255
|
|
1561+++8EFA~ DB #0858-#07E0
|
|
1562+++8EFA~ DB #08E0-#0858
|
|
1563+++8EFA~ DB #0960-#08E0
|
|
1564+++8EFA~ DB #09F0-#0960
|
|
1565+++8EFA~ DB #0A88-#09F0
|
|
1566+++8EFA~ DB #0B28-#0A88
|
|
1567+++8EFA~ DB #0BD8-#0B28
|
|
1568+++8EFA~ DB #0C80-#0BD8
|
|
1569+++8EFA~ DB #0D60-#0C80
|
|
1570+++8EFA~ DB #0E10-#0D60
|
|
1571+++8EFA~ DB #0EF8-#0E10
|
|
1572+++8EFA~ 1573+++8EFA~ ;vars from here can be stripped
|
|
1574+++8EFA~ ;you can move VARS to any other address
|
|
1575+++8EFA~ 1576+++8EFA~ VARS
|
|
1577+++8EFA~ 1578+++8EFA~ is_ts DB 0
|
|
1579+++8EFA~ 1580+++8EFA~ ;ChannelsVars
|
|
1581+++8EFA~ STRUCT CHP
|
|
1582+++8EFA~ ;reset group
|
|
1583+++8EFA~ PsInOr DB 0
|
|
1584+++8EFA~ PsInSm DB 0
|
|
1585+++8EFA~ CrAmSl DB 0
|
|
1586+++8EFA~ CrNsSl DB 0
|
|
1587+++8EFA~ CrEnSl DB 0
|
|
1588+++8EFA~ TSlCnt DB 0
|
|
1589+++8EFA~ CrTnSl DW 0
|
|
1590+++8EFA~ TnAcc DW 0
|
|
1591+++8EFA~ COnOff DB 0
|
|
1592+++8EFA~ ;reset group
|
|
1593+++8EFA~ 1594+++8EFA~ OnOffD DB 0
|
|
1595+++8EFA~ 1596+++8EFA~ ;IX for PTDECOD here (+12)
|
|
1597+++8EFA~ OffOnD DB 0
|
|
1598+++8EFA~ OrnPtr DW 0
|
|
1599+++8EFA~ SamPtr DW 0
|
|
1600+++8EFA~ NNtSkp DB 0
|
|
1601+++8EFA~ Note DB 0
|
|
1602+++8EFA~ SlToNt DB 0
|
|
1603+++8EFA~ Env_En DB 0
|
|
1604+++8EFA~ Flags DB 0
|
|
1605+++8EFA~ ;Enabled - 0, SimpleGliss - 2
|
|
1606+++8EFA~ TnSlDl DB 0
|
|
1607+++8EFA~ TSlStp DW 0
|
|
1608+++8EFA~ TnDelt DW 0
|
|
1609+++8EFA~ NtSkCn DB 0
|
|
1610+++8EFA~ Volume DB 0
|
|
1611+++8EFA~ ENDS
|
|
1612+++8EFA~ 1613+++8EFA~ STRUCT VRS
|
|
1614+++8EFA~ 1615+++8EFA~ ;IF not works in STRUCT in SjASM :(
|
|
1616+++8EFA~ ; IF CurPosCounter
|
|
1617+++8EFA~ CurPos DB 0
|
|
1618+++8EFA~ PosSub DB 0
|
|
1619+++8EFA~ ; ENDIF
|
|
1620+++8EFA~ 1621+++8EFA~ ModNum DB 0 ;bit0: ChipNum
|
|
1622+++8EFA~ ;bit1: 1-reversed patterns order (AlCo TS)
|
|
1623+++8EFA~ 1624+++8EFA~ ChanA DS CHP
|
|
1625+++8EFA~ ChanB DS CHP
|
|
1626+++8EFA~ ChanC DS CHP
|
|
1627+++8EFA~ 1628+++8EFA~ ;GlobalVars
|
|
1629+++8EFA~ MODADDR DW 0
|
|
1630+++8EFA~ OrnPtrs DW 0
|
|
1631+++8EFA~ SamPtrs DW 0
|
|
1632+++8EFA~ PatsPtr DW 0
|
|
1633+++8EFA~ AdInPtA DW 0
|
|
1634+++8EFA~ AdInPtB DW 0
|
|
1635+++8EFA~ AdInPtC DW 0
|
|
1636+++8EFA~ CrPsPtr DW 0
|
|
1637+++8EFA~ LPosPtr DW 0
|
|
1638+++8EFA~ Delay DB 0
|
|
1639+++8EFA~ DelyCnt DB 0
|
|
1640+++8EFA~ ESldAdd DW 0
|
|
1641+++8EFA~ CurESld DW 0
|
|
1642+++8EFA~ Env_Del DB 0
|
|
1643+++8EFA~ CurEDel DB 0
|
|
1644+++8EFA~ Ns_Base DB 0
|
|
1645+++8EFA~ AddToNs DB 0
|
|
1646+++8EFA~ AddToEn DB 0
|
|
1647+++8EFA~ EnvBase DW 0
|
|
1648+++8EFA~ AYREGS DS 14
|
|
1649+++8EFA~ ENDS
|
|
1650+++8EFA~ 1651+++8EFA~ VARS1 DS VRS
|
|
1652+++8EFA~ VARS2 DS VRS
|
|
1653+++8EFA~ 1654+++8EFA~ VT_ EQU $-16
|
|
1655+++8EFA~ DS 256-16 ;CreatedVolumeTableAddress
|
|
1656+++8EFA~ 1657+++8EFA~ T1_ EQU VT_+16 ;Tone tables data depacked here
|
|
1658+++8EFA~ 1659+++8EFA~ T_OLD_1 EQU T1_
|
|
1660+++8EFA~ T_OLD_2 EQU T_OLD_1+24
|
|
1661+++8EFA~ T_OLD_3 EQU T_OLD_2+24
|
|
1662+++8EFA~ T_OLD_0 EQU T_OLD_3+2
|
|
1663+++8EFA~ T_NEW_0 EQU T_OLD_0
|
|
1664+++8EFA~ T_NEW_1 EQU T_OLD_1
|
|
1665+++8EFA~ T_NEW_2 EQU T_NEW_0+24
|
|
1666+++8EFA~ T_NEW_3 EQU T_OLD_3
|
|
1667+++8EFA~ 1668+++8EFA~ PT2EMPTYORN EQU VT_+31 ;1,0,0 sequence
|
|
1669+++8EFA~ 1670+++8EFA~ NT_ DS 192 ;CreatedNoteTableAddress
|
|
1671+++8EFA~ 1672+++8EFA~ VAR0END EQU VT_+16 ;INIT zeroes from VARS to VAR0END-1
|
|
1673+++8EFA~ 1674+++8EFA~ VARSEND EQU $
|
|
1675+++8EFA~ MDLADDR EQU $
|
|
1676+++8EFA~ 1677+++8EFA~ DISPLAY "PTS player size=",$-START
|
|
1678+++8EFA~ 1679+++8EFA~ ;Release 0 steps:
|
|
1680+++8EFA~ ;04/21/2007
|
|
1681+++8EFA~ ;Works start (PTxPlay adaptation); first beta.
|
|
1682+++8EFA~ ;04/22/2007
|
|
1683+++8EFA~ ;Job finished; beta-testing.
|
|
1684+++8EFA~ ;04/23/2007
|
|
1685+++8EFA~ ;PT v3.7 TS mode corrected (after AlCo remarks).
|
|
1686+++8EFA~ ;04/29/2007
|
|
1687+++8EFA~ ;Added 1.XX and 2.XX special commands interpretation for PT3
|
|
1688+++8EFA~ ;modules of v3.7+.
|
|
1689+++8EFA~ 1690+++8EFA~ ;Size (minimal build for ZX Spectrum):
|
|
1691+++8EFA~ ;Code block #908 bytes
|
|
1692+++8EFA~ ;Variables #2BF bytes (can be stripped)
|
|
1693+++8EFA~ ;Total size #908+#2BF=#BC7 (3015) bytes
|
|
1694+++8EFA~ 1695+++8EFA~ ENDMOD
|
|
1696+++8EFA~ 1697+++8EFA endif
|
|
1698+++8EFA
|
|
0095++ 8EFA
|
|
0096++ 8EFA TS.End
|
|
0097++ 8EFA TS.Play=PTS.PLAY
|
|
0098++ 8EFA TS.Mute=PTS.MUTE
|
|
0099++ 8EFA
|
|
0100++ 8EFA display "TS module size: ",TS.End-TS.Start
|
|
0101++ 8EFA
|
|
0102++ 8EFA endif
|
|
0103++ 8EFA
|
|
0421+ 8EFA include "tfc.asm"
|
|
0001++ 8EFA ifndef _tfc_asm_defined
|
|
0002++ 8EFA define _tfc_asm_defined
|
|
0003++ 8EFA
|
|
0004++ 8EFA module TFC
|
|
0005++ 8EFA
|
|
0006++ 8EFA ; Original version by (C) Alone Coder
|
|
0007++ 8EFA ; SjasmPlus adaptation, code cleanup and size optimization by (C) Vitamin/CAIG
|
|
0008++ 8EFA
|
|
0009++ 8EFA ; Warning: no 60Hz modules support!
|
|
0010++ 8EFA
|
|
0011++ 8EFA ;TODO begin&end ⮫쪮 � ����� ������
|
|
0012++ 8EFA newtfm=1 ;0=revision A, 1=revision C
|
|
0013++ 8EFA
|
|
0014++ 8EFA if newtfm == 1
|
|
0015++ 8EFA statuschip0=%11111000
|
|
0016++ 8EFA statuschip1=%11111001
|
|
0017++ 8EFA else
|
|
0018++ 8EFA~ if newtfm == 2 ;US031DX
|
|
0019++ 8EFA~ statuschip0=%11111110
|
|
0020++ 8EFA~ statuschip1=%11111111
|
|
0021++ 8EFA~ else ;newtfm=0
|
|
0022++ 8EFA~ statuschip0=%11111100
|
|
0023++ 8EFA~ statuschip1=%11111101
|
|
0024++ 8EFA~ endif
|
|
0025++ 8EFA endif
|
|
0026++ 8EFA
|
|
0027++ 8EFA struct Header
|
|
0028++ 8EFA~ signature
|
|
0029++ 8EFA~ ds 6
|
|
0030++ 8EFA~ version ds 3
|
|
0031++ 8EFA~ intfreq db 0
|
|
0032++ 8EFA~ tfmptrs ds 12
|
|
0033++ 8EFA~ ssgptrs ds 12
|
|
0034++ 8EFA ends
|
|
0035++ 8EFA
|
|
0036++ 8EFA struct TFMData
|
|
0037++ 8EFA~ addr dw 0
|
|
0038++ 8EFA~ skip db 0
|
|
0039++ 8EFA~ blkcnt db 0
|
|
0040++ 8EFA~ blkretaddr
|
|
0041++ 8EFA~ db 0
|
|
0042++ 8EFA~ loopaddr
|
|
0043++ 8EFA~ db 0
|
|
0044++ 8EFA~ tfmlow db 0
|
|
0045++ 8EFA~ tfmhigh db 0
|
|
0046++ 8EFA ends
|
|
0047++ 8EFA
|
|
0048++ 8EFA macro WaitStatus
|
|
0049++ 8EFA~ if newtfm != 2
|
|
0050++ 8EFA~ inf
|
|
0051++ 8EFA~ jp m,$-2
|
|
0052++ 8EFA~ endif
|
|
0053++ 8EFA endm
|
|
0054++ 8EFA
|
|
0055++ 8EFA macro FM.OutReg Reg
|
|
0056++ 8EFA~ WaitStatus
|
|
0057++ 8EFA~ out (c),Reg
|
|
0058++ 8EFA endm
|
|
0059++ 8EFA
|
|
0060++ 8EFA macro FM.SelectReg Reg
|
|
0061++ 8EFA~ ld b,d
|
|
0062++ 8EFA~ FM.OutReg Reg
|
|
0063++ 8EFA endm
|
|
0064++ 8EFA
|
|
0065++ 8EFA macro FM.WriteReg Reg
|
|
0066++ 8EFA~ ld b,e
|
|
0067++ 8EFA~ FM.OutReg Reg
|
|
0068++ 8EFA endm
|
|
0069++ 8EFA
|
|
0070++ 8EFA Start
|
|
0071++ 8EFA 21 73 91 ld hl,End
|
|
0072++ 8EFD 18 2F jr Init
|
|
0073++ 8EFF C3 E1 8F jp Play
|
|
0074++ 8F02 C3 6A 8F jp Mute
|
|
0075++ 8F05
|
|
0076++ 8F05 ifdef HaveFormatCheck
|
|
0077++ 8F05 include "format.asm"
|
|
0001+++8F05 ;some format checking macros
|
|
0002+++8F05 ifndef _format_asm_defined
|
|
0003+++8F05~ define _format_asm_defined
|
|
0004+++8F05~ 0005+++8F05~ macro LessOrEqual number
|
|
0006+++8F05~ ld a,number
|
|
0007+++8F05~ cp (hl)
|
|
0008+++8F05~ inc hl
|
|
0009+++8F05~ ret c
|
|
0010+++8F05~ endm
|
|
0011+++8F05~
|
|
0012+++8F05~ macro Greater number
|
|
0013+++8F05~ ld a,(hl)
|
|
0014+++8F05~ inc hl
|
|
0015+++8F05~ cp number
|
|
0016+++8F05~ ret c
|
|
0017+++8F05~ endm
|
|
0018+++8F05~
|
|
0019+++8F05~ macro AnyByte
|
|
0020+++8F05~ inc hl
|
|
0021+++8F05~ endm
|
|
0022+++8F05~
|
|
0023+++8F05~ macro AnyBytes count
|
|
0024+++8F05~ if count > 7
|
|
0025+++8F05~ ld a,l
|
|
0026+++8F05~ add a,count
|
|
0027+++8F05~ ld l,a
|
|
0028+++8F05~ adc a,h
|
|
0029+++8F05~ sub l
|
|
0030+++8F05~ ld h,a
|
|
0031+++8F05~ else
|
|
0032+++8F05~ dup count
|
|
0033+++8F05~ inc hl
|
|
0034+++8F05~ edup
|
|
0035+++8F05~ endif
|
|
0036+++8F05~ endm
|
|
0037+++8F05~
|
|
0038+++8F05~ macro EqualTo number
|
|
0039+++8F05~ ld a,number
|
|
0040+++8F05~ cp (hl)
|
|
0041+++8F05~ inc hl
|
|
0042+++8F05~ ret nz
|
|
0043+++8F05~ endm
|
|
0044+++8F05~ 0045+++8F05 endif
|
|
0046+++8F05
|
|
0078++ 8F05
|
|
0079++ 8F05 ;in HL - module addr
|
|
0080++ 8F05 ;out Z - is tfc
|
|
0081++ 8F05 ;out C - 60 Hz (valid only if Z)
|
|
0082++ 8F05 CheckFormat
|
|
0083++ 8F05 EqualTo "T"
|
|
0083++ 8F05 3E 54 > ld a,number
|
|
0083++ 8F07 BE > cp (hl)
|
|
0083++ 8F08 23 > inc hl
|
|
0083++ 8F09 C0 > ret nz
|
|
0084++ 8F0A EqualTo "F"
|
|
0084++ 8F0A 3E 46 > ld a,number
|
|
0084++ 8F0C BE > cp (hl)
|
|
0084++ 8F0D 23 > inc hl
|
|
0084++ 8F0E C0 > ret nz
|
|
0085++ 8F0F EqualTo "M"
|
|
0085++ 8F0F 3E 4D > ld a,number
|
|
0085++ 8F11 BE > cp (hl)
|
|
0085++ 8F12 23 > inc hl
|
|
0085++ 8F13 C0 > ret nz
|
|
0086++ 8F14 EqualTo "c"
|
|
0086++ 8F14 3E 63 > ld a,number
|
|
0086++ 8F16 BE > cp (hl)
|
|
0086++ 8F17 23 > inc hl
|
|
0086++ 8F18 C0 > ret nz
|
|
0087++ 8F19 EqualTo "o"
|
|
0087++ 8F19 3E 6F > ld a,number
|
|
0087++ 8F1B BE > cp (hl)
|
|
0087++ 8F1C 23 > inc hl
|
|
0087++ 8F1D C0 > ret nz
|
|
0088++ 8F1E EqualTo "m"
|
|
0088++ 8F1E 3E 6D > ld a,number
|
|
0088++ 8F20 BE > cp (hl)
|
|
0088++ 8F21 23 > inc hl
|
|
0088++ 8F22 C0 > ret nz
|
|
0089++ 8F23 AnyBytes 3
|
|
0090++ 8F23 23 > inc hl
|
|
0090++ 8F24 23 > inc hl
|
|
0090++ 8F25 23 > inc hl
|
|
0090++ 8F26 7E ld a,(hl)
|
|
0091++ 8F27 FE 32 cp 50
|
|
0092++ 8F29 C8 ret z
|
|
0093++ 8F2A FE 3C cp 60
|
|
0094++ 8F2C 3F ccf
|
|
0095++ 8F2D C9 ret
|
|
0096++ 8F2E
|
|
0097++ 8F2E display "TFC checker size: ",$-CheckFormat
|
|
0098++ 8F2E endif
|
|
0099++ 8F2E
|
|
0100++ 8F2E ;HL - module addr
|
|
0101++ 8F2E Init
|
|
0102++ 8F2E EB exd
|
|
0103++ 8F2F 21 0A 00 ld hl,Header.tfmptrs
|
|
0104++ 8F32 19 add hl,de
|
|
0105++ 8F33 D9 exx
|
|
0106++ 8F34
|
|
0107++ 8F34 21 3B 91 ld hl,TFM.Init
|
|
0108++ 8F37 11 43 91 ld de,TFM.A
|
|
0109++ 8F3A 01 30 00 ld bc,6*TFMData
|
|
0110++ 8F3D ED B0 ldir
|
|
0111++ 8F3F
|
|
0112++ 8F3F 21 5E 8F ld hl,.tfminitab
|
|
0113++ 8F42 01 FD 06 ld bc,128*(.tfminitab_end-.tfminitab)+#fd
|
|
0114++ 8F45 .tfmini0
|
|
0115++ 8F45 11 54 8F ld de,.tfminiHL
|
|
0116++ 8F48 ED A0 ldi
|
|
0117++ 8F4A ED A0 ldi
|
|
0118++ 8F4C D9 exx
|
|
0119++ 8F4D 7E ld a,(hl)
|
|
0120++ 8F4E 23 inc hl
|
|
0121++ 8F4F E5 push hl
|
|
0122++ 8F50 66 ld h,(hl)
|
|
0123++ 8F51 6F ld l,a
|
|
0124++ 8F52 19 add hl,de
|
|
0125++ 8F53 .tfminiHL=$+1
|
|
0126++ 8F53 22 00 00 ld (0),hl
|
|
0127++ 8F56 E1 pop hl
|
|
0128++ 8F57 23 inc hl
|
|
0129++ 8F58 D9 exx
|
|
0130++ 8F59 10 EA djnz .tfmini0
|
|
0131++ 8F5B
|
|
0132++ 8F5B C3 6A 8F jp Mute
|
|
0133++ 8F5E
|
|
0134++ 8F5E .tfminitab
|
|
0135++ 8F5E 43 91 DW TFM.A.addr
|
|
0136++ 8F60 4B 91 DW TFM.B.addr
|
|
0137++ 8F62 53 91 DW TFM.C.addr
|
|
0138++ 8F64 5B 91 DW TFM.D.addr
|
|
0139++ 8F66 63 91 DW TFM.E.addr
|
|
0140++ 8F68 6B 91 DW TFM.F.addr
|
|
0141++ 8F6A .tfminitab_end
|
|
0142++ 8F6A
|
|
0143++ 8F6A Mute
|
|
0144++ 8F6A 11 BF FF ld de,#ffbf
|
|
0145++ 8F6D 0E FD ld c,#fd
|
|
0146++ 8F6F CD D9 8F call selChip0
|
|
0147++ 8F72 CD 78 8F call .tfminiPP
|
|
0148++ 8F75 CD DD 8F call selChip1
|
|
0149++ 8F78 .tfminiPP
|
|
0150++ 8F78 ; 0 -> (00..0D)
|
|
0151++ 8F78 21 00 00 ld hl,#0000
|
|
0152++ 8F7B 3E 0E ld a,#0e
|
|
0153++ 8F7D CD C0 8F call .writeregsset
|
|
0154++ 8F80
|
|
0155++ 8F80 ; 0 -> (30..3F)
|
|
0156++ 8F80 26 30 ld h,#30
|
|
0157++ 8F82 3E 40 ld a,#40
|
|
0158++ 8F84 CD C0 8F call .writeregsset
|
|
0159++ 8F87
|
|
0160++ 8F87 ; 0 -> (50..B4)
|
|
0161++ 8F87 26 50 ld h,#50
|
|
0162++ 8F89 3E B5 ld a,#b5
|
|
0163++ 8F8B CD C0 8F call .writeregsset
|
|
0164++ 8F8E
|
|
0165++ 8F8E ; 0F -> (80..8F) ;max speed to RR
|
|
0166++ 8F8E 21 0F 80 ld hl,#800f
|
|
0167++ 8F91 3E 90 ld a,#90
|
|
0168++ 8F93 CD C0 8F call .writeregsset
|
|
0169++ 8F96
|
|
0170++ 8F96 ; 0..2 -> 28, key off
|
|
0171++ 8F96 ; 2 -> 27 channel 3 mode
|
|
0172++ 8F96 21 00 28 ld hl,#2800
|
|
0173++ 8F99 CD C8 8F call .writereg
|
|
0174++ 8F9C 2C inc l
|
|
0175++ 8F9D CD C8 8F call .writereg
|
|
0176++ 8FA0 2C inc l
|
|
0177++ 8FA1 CD C8 8F call .writereg
|
|
0178++ 8FA4 25 dec h
|
|
0179++ 8FA5 CD C8 8F call .writereg
|
|
0180++ 8FA8
|
|
0181++ 8FA8 ; 7F -> (40..4F,2F,2D)
|
|
0182++ 8FA8 21 7F 40 ld hl,#407f
|
|
0183++ 8FAB 3E 50 ld a,#50
|
|
0184++ 8FAD CD C0 8F call .writeregsset
|
|
0185++ 8FB0
|
|
0186++ 8FB0 26 2F ld h,#2f
|
|
0187++ 8FB2 CD C8 8F call .writereg
|
|
0188++ 8FB5
|
|
0189++ 8FB5 26 2D ld h,#2d
|
|
0190++ 8FB7 CD C8 8F call .writereg
|
|
0191++ 8FBA
|
|
0192++ 8FBA 3E FF ld a,#ff ;�몫. FM
|
|
0193++ 8FBC .selRegA
|
|
0194++ 8FBC 42 ld b,d
|
|
0195++ 8FBD ED 79 out (c),a
|
|
0196++ 8FBF C9 ret
|
|
0197++ 8FC0
|
|
0198++ 8FC0 ;H=REG start
|
|
0199++ 8FC0 ;L=VALUE
|
|
0200++ 8FC0 ;A=REG end (not inclusive)
|
|
0201++ 8FC0 .writeregsset
|
|
0202++ 8FC0 CD C8 8F call .writereg
|
|
0203++ 8FC3 24 inc h
|
|
0204++ 8FC4 BC cp h
|
|
0205++ 8FC5 20 F9 jr nz,.writeregsset
|
|
0206++ 8FC7 C9 ret
|
|
0207++ 8FC8 ;H=REG
|
|
0208++ 8FC8 ;L=VALUE
|
|
0209++ 8FC8 .writereg
|
|
0210++ 8FC8 FM.SelectReg h
|
|
0210++ 8FC8 42 > ld b,d
|
|
0210++ 8FC9 ED 70 > inf
|
|
0210++ 8FCB FA C9 8F > jp m,$-2
|
|
0210++ 8FCE ED 61 > out (c),Reg
|
|
0211++ 8FD0 FM.WriteReg l
|
|
0211++ 8FD0 43 > ld b,e
|
|
0211++ 8FD1 ED 70 > inf
|
|
0211++ 8FD3 FA D1 8F > jp m,$-2
|
|
0211++ 8FD6 ED 69 > out (c),Reg
|
|
0212++ 8FD8 C9 ret
|
|
0213++ 8FD9
|
|
0214++ 8FD9 selChip0
|
|
0215++ 8FD9 3E F8 ld a,statuschip0
|
|
0216++ 8FDB 18 DF jr Mute.selRegA
|
|
0217++ 8FDD
|
|
0218++ 8FDD selChip1
|
|
0219++ 8FDD 3E F9 ld a,statuschip1
|
|
0220++ 8FDF 18 DB jr Mute.selRegA
|
|
0221++ 8FE1
|
|
0222++ 8FE1 Play
|
|
0223++ 8FE1 11 BF FF ld de,#FFBF
|
|
0224++ 8FE4 0E FD ld c,#FD
|
|
0225++ 8FE6
|
|
0226++ 8FE6 CD D9 8F call selChip0
|
|
0227++ 8FE9
|
|
0228++ 8FE9 AF xor a
|
|
0229++ 8FEA 08 exa
|
|
0230++ 8FEB DD 21 43 91 ld ix,TFM.A
|
|
0231++ 8FEF CD 26 90 call PlayChannel
|
|
0232++ 8FF2 3E 01 ld a,1
|
|
0233++ 8FF4 08 exa
|
|
0234++ 8FF5 DD 21 4B 91 ld ix,TFM.B
|
|
0235++ 8FF9 CD 26 90 call PlayChannel
|
|
0236++ 8FFC 3E 02 ld a,2
|
|
0237++ 8FFE 08 exa
|
|
0238++ 8FFF DD 21 53 91 ld ix,TFM.C
|
|
0239++ 9003 CD 26 90 call PlayChannel
|
|
0240++ 9006
|
|
0241++ 9006 CD DD 8F call selChip1
|
|
0242++ 9009
|
|
0243++ 9009 AF xor a
|
|
0244++ 900A 08 exa
|
|
0245++ 900B DD 21 5B 91 ld ix,TFM.D
|
|
0246++ 900F CD 26 90 call PlayChannel
|
|
0247++ 9012 3E 01 ld a,1
|
|
0248++ 9014 08 exa
|
|
0249++ 9015 DD 21 63 91 ld ix,TFM.E
|
|
0250++ 9019 CD 26 90 call PlayChannel
|
|
0251++ 901C 3E 02 ld a,2
|
|
0252++ 901E 08 exa
|
|
0253++ 901F DD 21 6B 91 ld ix,TFM.F
|
|
0254++ 9023 C3 26 90 jp PlayChannel
|
|
0255++ 9026
|
|
0256++ 9026 ;%11111111,-disp8 = ������ ����� ����� �� ᬥ饭�� -disp8
|
|
0257++ 9026 ;%111ttttt = skip 32..2 frames
|
|
0258++ 9026 ;%110ddddd = slide d-16
|
|
0259++ 9026 ;%11010000,frames,-disp16 = repeat block (skips = 1 frame)
|
|
0260++ 9026 ;%10111111,-disp16 = ������ ����� ����� �� ᬥ饭�� -disp16
|
|
0261++ 9026 ;%10NNNNNf = keyoff,[freq,]0..30 regs, keyon
|
|
0262++ 9026 ;%01111111 = end
|
|
0263++ 9026 ;%01111110 = begin
|
|
0264++ 9026 ;%01NNNNNf = keyoff,[freq,]0..31 regs
|
|
0265++ 9026 ;%00NNNNNf = [freq,]0..30 regs
|
|
0266++ 9026 bb=%01111110
|
|
0267++ 9026 be=%01111111
|
|
0268++ 9026 ;IX - data
|
|
0269++ 9026 ;DE - hi ports #FFBF
|
|
0270++ 9026 ;C - low port #FD
|
|
0271++ 9026 ;A' - fm channel
|
|
0272++ 9026 PlayChannel
|
|
0273++ 9026 DD 7E 02 ld a,(ix+TFMData.skip)
|
|
0274++ 9029 3C inc a
|
|
0275++ 902A C2 E9 90 jp nz,.skiper
|
|
0276++ 902D DD 7E 03 ld a,(ix+TFMData.blkcnt)
|
|
0277++ 9030 A7 and a
|
|
0278++ 9031 28 1D jr z,.noframe
|
|
0279++ 9033 DD 35 03 dec (ix+TFMData.blkcnt)
|
|
0280++ 9036 20 18 jr nz,.noframe
|
|
0281++ 9038 DD 6E 04 ld l,(ix+TFMData.blkretaddr)
|
|
0282++ 903B DD 66 05 ld h,(ix+TFMData.blkretaddr+1)
|
|
0283++ 903E 18 16 jr .tfmframe
|
|
0284++ 9040 .begin
|
|
0285++ 9040 DD 75 05 ld (ix+TFMData.loopaddr),l
|
|
0286++ 9043 DD 74 06 ld (ix+TFMData.loopaddr+1),h
|
|
0287++ 9046 18 0E jr .tfmframe
|
|
0288++ 9048 .end
|
|
0289++ 9048 DD 6E 05 ld l,(ix+TFMData.loopaddr)
|
|
0290++ 904B DD 66 06 ld h,(ix+TFMData.loopaddr+1)
|
|
0291++ 904E 18 06 jr .tfmframe
|
|
0292++ 9050 .noframe
|
|
0293++ 9050 DD 6E 00 ld l,(ix+TFMData.addr)
|
|
0294++ 9053 DD 66 01 ld h,(ix+TFMData.addr+1)
|
|
0295++ 9056 .tfmframe
|
|
0296++ 9056 7E ld a,(hl)
|
|
0297++ 9057 23 inc hl
|
|
0298++ 9058 FE 7E cp bb
|
|
0299++ 905A 28 E4 jr z,.begin
|
|
0300++ 905C FE 7F cp be
|
|
0301++ 905E 28 E8 jr z,.end
|
|
0302++ 9060 BB cp e ;#BF
|
|
0303++ 9061 D2 DC 90 jp NC,.HLskiper
|
|
0304++ 9064 ;TestKeyOff
|
|
0305++ 9064 F2 7D 90 jp P,.noffX
|
|
0306++ 9067 F5 push af
|
|
0307++ 9068 3E 28 ld a,#28
|
|
0308++ 906A FM.SelectReg a
|
|
0308++ 906A 42 > ld b,d
|
|
0308++ 906B ED 70 > inf
|
|
0308++ 906D FA 6B 90 > jp m,$-2
|
|
0308++ 9070 ED 79 > out (c),Reg
|
|
0309++ 9072 08 exa
|
|
0310++ 9073 FM.WriteReg a ;FMChannel
|
|
0310++ 9073 43 > ld b,e
|
|
0310++ 9074 ED 70 > inf
|
|
0310++ 9076 FA 74 90 > jp m,$-2
|
|
0310++ 9079 ED 79 > out (c),Reg
|
|
0311++ 907B 08 exa
|
|
0312++ 907C F1 pop af
|
|
0313++ 907D .noffX
|
|
0314++ 907D B7 OR a
|
|
0315++ 907E F5 push af
|
|
0316++ 907F ;TestFreq
|
|
0317++ 907F 1F RRA
|
|
0318++ 9080 30 12 jr NC,.nofrqX
|
|
0319++ 9082
|
|
0320++ 9082 46 ld b,(hl)
|
|
0321++ 9083 23 inc hl
|
|
0322++ 9084 4E ld c,(hl)
|
|
0323++ 9085 23 inc hl
|
|
0324++ 9086 DD 70 07 ld (ix+TFMData.tfmhigh),b
|
|
0325++ 9089 DD 71 06 ld (ix+TFMData.tfmlow),c
|
|
0326++ 908C C5 push bc
|
|
0327++ 908D E3 ex (sp),hl
|
|
0328++ 908E 0E FD ld c,#FD
|
|
0329++ 9090 CD FE 90 call .outTone
|
|
0330++ 9093 E1 pop hl
|
|
0331++ 9094
|
|
0332++ 9094 .nofrqX
|
|
0333++ 9094 E6 1F and #1F
|
|
0334++ 9096 C4 27 91 call nz,.OutRegs
|
|
0335++ 9099 CD D5 90 call .storeaddr
|
|
0336++ 909C F1 pop af
|
|
0337++ 909D F0 ret P
|
|
0338++ 909E ;.KeyOn
|
|
0339++ 909E 3E 28 ld a,#28
|
|
0340++ 90A0 FM.SelectReg a
|
|
0340++ 90A0 42 > ld b,d
|
|
0340++ 90A1 ED 70 > inf
|
|
0340++ 90A3 FA A1 90 > jp m,$-2
|
|
0340++ 90A6 ED 79 > out (c),Reg
|
|
0341++ 90A8 08 exa
|
|
0342++ 90A9 C6 F0 add a,#F0
|
|
0343++ 90AB FM.WriteReg a
|
|
0343++ 90AB 43 > ld b,e
|
|
0343++ 90AC ED 70 > inf
|
|
0343++ 90AE FA AC 90 > jp m,$-2
|
|
0343++ 90B1 ED 79 > out (c),Reg
|
|
0344++ 90B3 D6 F0 sub #F0
|
|
0345++ 90B5 08 exa
|
|
0346++ 90B6 C9 ret
|
|
0347++ 90B7
|
|
0348++ 90B7 .block
|
|
0349++ 90B7 7E ld a,(hl) ;N frames
|
|
0350++ 90B8 ;1 now, N-1 later
|
|
0351++ 90B8 ;skip command is used as 1 frame
|
|
0352++ 90B8 23 inc hl
|
|
0353++ 90B9 DD 77 03 ld (ix+TFMData.blkcnt),a
|
|
0354++ 90BC 46 ld b,(hl)
|
|
0355++ 90BD 23 inc hl
|
|
0356++ 90BE 4E ld c,(hl) ;disp
|
|
0357++ 90BF 23 inc hl
|
|
0358++ 90C0 DD 75 04 ld (ix+TFMData.blkretaddr),l
|
|
0359++ 90C3 DD 74 05 ld (ix+TFMData.blkretaddr+1),h
|
|
0360++ 90C6 .subframe
|
|
0361++ 90C6 09 add hl,bc
|
|
0362++ 90C7 0E FD ld c,#fd
|
|
0363++ 90C9 C3 56 90 jp .tfmframe
|
|
0364++ 90CC
|
|
0365++ 90CC .OLDfar
|
|
0366++ 90CC 46 ld b,(hl)
|
|
0367++ 90CD 23 inc hl
|
|
0368++ 90CE .OLDnear
|
|
0369++ 90CE 4E ld c,(hl)
|
|
0370++ 90CF 23 inc hl
|
|
0371++ 90D0 E5 push hl
|
|
0372++ 90D1 CD C6 90 call .subframe
|
|
0373++ 90D4 E1 pop hl
|
|
0374++ 90D5 .storeaddr
|
|
0375++ 90D5 DD 75 00 ld (ix+TFMData.addr),l
|
|
0376++ 90D8 DD 74 01 ld (ix+TFMData.addr+1),h
|
|
0377++ 90DB C9 ret
|
|
0378++ 90DC .HLskiper
|
|
0379++ 90DC 28 EE jr z,.OLDfar
|
|
0380++ 90DE FE E0 cp %11100000
|
|
0381++ 90E0 38 0B jr c,.slide
|
|
0382++ 90E2 47 ld b,a
|
|
0383++ 90E3 BA cp d ;#FF
|
|
0384++ 90E4 28 E8 jr z,.OLDnear
|
|
0385++ 90E6 CD D5 90 call .storeaddr
|
|
0386++ 90E9 DD 77 02 .skiper ld (ix+TFMData.skip),a
|
|
0387++ 90EC C9 ret
|
|
0388++ 90ED .slide
|
|
0389++ 90ED ;a=-64..-33
|
|
0390++ 90ED C6 30 add a,48
|
|
0391++ 90EF ;a=-16..15
|
|
0392++ 90EF 28 C6 jr z,.block
|
|
0393++ 90F1 DD 86 06 add a,(ix+TFMData.tfmlow)
|
|
0394++ 90F4 DD 77 06 ld (ix+TFMData.tfmlow),a
|
|
0395++ 90F7 CD D5 90 call .storeaddr
|
|
0396++ 90FA DD 66 07 ld h,(ix+TFMData.tfmhigh)
|
|
0397++ 90FD 6F ld l,a
|
|
0398++ 90FE .outTone
|
|
0399++ 90FE 08 exa
|
|
0400++ 90FF C6 A4 add a,#a4
|
|
0401++ 9101 FM.SelectReg a
|
|
0401++ 9101 42 > ld b,d
|
|
0401++ 9102 ED 70 > inf
|
|
0401++ 9104 FA 02 91 > jp m,$-2
|
|
0401++ 9107 ED 79 > out (c),Reg
|
|
0402++ 9109 FM.WriteReg h
|
|
0402++ 9109 43 > ld b,e
|
|
0402++ 910A ED 70 > inf
|
|
0402++ 910C FA 0A 91 > jp m,$-2
|
|
0402++ 910F ED 61 > out (c),Reg
|
|
0403++ 9111 D6 04 sub #04 ;#A0+channel
|
|
0404++ 9113 FM.SelectReg a
|
|
0404++ 9113 42 > ld b,d
|
|
0404++ 9114 ED 70 > inf
|
|
0404++ 9116 FA 14 91 > jp m,$-2
|
|
0404++ 9119 ED 79 > out (c),Reg
|
|
0405++ 911B FM.WriteReg l
|
|
0405++ 911B 43 > ld b,e
|
|
0405++ 911C ED 70 > inf
|
|
0405++ 911E FA 1C 91 > jp m,$-2
|
|
0405++ 9121 ED 69 > out (c),Reg
|
|
0406++ 9123 D6 A0 sub #a0
|
|
0407++ 9125 08 exa
|
|
0408++ 9126 C9 ret
|
|
0409++ 9127
|
|
0410++ 9127 42 .OutRegs ld b,d ;%11111xxx
|
|
0411++ 9128 WaitStatus
|
|
0411++ 9128 ED 70 > inf
|
|
0411++ 912A FA 28 91 > jp m,$-2
|
|
0412++ 912D ED A3 outi ;reg
|
|
0413++ 912F WaitStatus
|
|
0413++ 912F ED 70 > inf
|
|
0413++ 9131 FA 2F 91 > jp m,$-2
|
|
0414++ 9134 43 ld b,e ;#BF
|
|
0415++ 9135 ED A3 outi ;value
|
|
0416++ 9137 3D dec a
|
|
0417++ 9138 20 ED jr nz,.OutRegs ;� turbo jr=jp
|
|
0418++ 913A C9 ret
|
|
0419++ 913B
|
|
0420++ 913B TFM.Init TFMData 0,-1,0
|
|
0420++ 913B 0000FF0000000000
|
|
0421++ 9143 TFM.A TFMData
|
|
0421++ 9143 0000000000000000
|
|
0422++ 914B TFM.B TFMData
|
|
0422++ 914B 0000000000000000
|
|
0423++ 9153 TFM.C TFMData
|
|
0423++ 9153 0000000000000000
|
|
0424++ 915B TFM.D TFMData
|
|
0424++ 915B 0000000000000000
|
|
0425++ 9163 TFM.E TFMData
|
|
0425++ 9163 0000000000000000
|
|
0426++ 916B TFM.F TFMData
|
|
0426++ 916B 0000000000000000
|
|
0427++ 9173
|
|
0428++ 9173 endmod
|
|
0429++ 9173 TFC.End
|
|
0430++ 9173
|
|
0431++ 9173 display "TFC module size: ",TFC.End-TFC.Start
|
|
0432++ 9173
|
|
0433++ 9173 endif
|
|
0434++ 9173
|
|
0422+ 9173 MTC.End
|
|
0423+ 9173 display "MTC module size: ",MTC.End-MTC.Start
|
|
0424+ 9173
|
|
0425+ 9173 endif
|
|
0426+ 9173
|
|
0013 9173
|
|
0014 9173 module
|
|
0015 9173 ;incbin MTC_CYBERMOTION
|
|
0016 9173 ;incbin MTC_DRUMTEST
|
|
0017 9173 ;incbin MTC_MUG
|
|
0018 9173 ;incbin MTC_MYSTICAL
|
|
0019 9173 ;incbin MTC_NEWOLD
|
|
0020 9173 ;incbin MTC_SNEGURKA
|
|
0021 9173 incbin MTC_INDEEDREST
|
|
0022 BBAD
|
|
0023 BBAD savesna "test_mtc.sna",begin
|
|
0024 BBAD savebin "../mtc_8000.bin",player,module-player
|
|
0025 BBAD
|
|
|
|
Value Label
|
|
------ - -----------------------------------------------------------
|
|
0x6000 begin
|
|
0x8000 init
|
|
0x600D begin.loop
|
|
0x6014 begin.delay
|
|
0x8005 play
|
|
0x8008 mute
|
|
0x602C X begin.fail
|
|
0x8000 player
|
|
0x0005 X MTC.StreamType
|
|
0x0000 MTC.StreamType.PT3
|
|
0x0001 MTC.StreamType.PT2
|
|
0x0002 MTC.StreamType.TS
|
|
0x0003 MTC.StreamType.TFC
|
|
0x0004 MTC.StreamType.Unknown
|
|
0x000B MTC.StreamData
|
|
0x0000 MTC.StreamData.Type
|
|
0x0001 MTC.StreamData.Data1
|
|
0x0003 MTC.StreamData.Data2
|
|
0x0005 MTC.StreamData.Init
|
|
0x0007 MTC.StreamData.Play
|
|
0x0009 MTC.StreamData.Mute
|
|
0x8000 MTC.Start
|
|
0x9173 MTC.End
|
|
0x800B MTC.Init
|
|
0x8048 MTC.Play
|
|
0x8066 MTC.Mute
|
|
0x80BD MTC.Streams
|
|
0x8086 MTC.ParseChunk
|
|
0x0000 MTC.ChunkId.MTC1
|
|
0x811C MTC.ParseMTC1
|
|
0x81E6 MTC.MergeStreams
|
|
0x8022 MTC.Init.initstreams
|
|
0x8084 MTC.jp_bc
|
|
0x804C MTC.Play.playstreams
|
|
0x806A MTC.Mute.mutestreams
|
|
0x8100 MTC.ChunkId
|
|
0x8089 MTC.ParseChunk.checkid
|
|
0x80B4 MTC.ParseChunk.matched
|
|
0x001C MTC.ChunkId.Unknown
|
|
0x80B6 MTC.ParseChunk.getdata
|
|
0x0003 MTC.MinStreamsCount
|
|
0x80DE MTC.Streams.End
|
|
0x0004 MTC.ChunkId.TRCK
|
|
0x0008 MTC.ChunkId.DATA
|
|
0x000C X MTC.ChunkId.NAME
|
|
0x0010 X MTC.ChunkId.AUTH
|
|
0x0014 X MTC.ChunkId.ANNO
|
|
0x0018 X MTC.ChunkId.PROP
|
|
0x0006 MTC.MaxStreamsCount
|
|
0x811F MTC.ParseMTC1.nextchunk
|
|
0x8137 MTC.ParseTrack
|
|
0x813A MTC.ParseTrack.nextchunk
|
|
0x8156 MTC.ParseData
|
|
0x8162 MTC.ParseTFC
|
|
0x8184 MTC.ParseTS
|
|
0x8191 MTC.ParsePT2
|
|
0x81A4 MTC.ParsePT3
|
|
0x8F05 TFC.CheckFormat
|
|
0x8F2E TFC.Init
|
|
0x8FE1 TFC.Play
|
|
0x8F6A TFC.Mute
|
|
0x81C3 MTC.FillStream
|
|
0x8179 MTC.AddStream
|
|
0x8ECD TS.CheckFormatKnownSize
|
|
0x81B7 MTC.FillTS
|
|
0x8E7C PT2.CheckFormat
|
|
0x8E77 PT2.Init
|
|
0x81BD MTC.FillPts
|
|
0x8E30 PT3.CheckFormat
|
|
0x8E2B PT3.Init
|
|
0x8EB7 TS.Init
|
|
0x8A88 PTS.PLAY
|
|
0x825A PTS.MUTE
|
|
0x81F2 MTC.Sort
|
|
0x81FA MTC.Sort.cycle
|
|
0x8219 MTC.Sort.end
|
|
0x8212 MTC.Sort.next
|
|
0x8206 MTC.Sort.swapitems
|
|
0x821D X MTC.Merge
|
|
0x8223 MTC.Merge.cycle
|
|
0x8231 MTC.Merge.perform
|
|
0x824A MTC.Merge.generic
|
|
0x824C MTC.Merge.copyitems
|
|
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
|
|
0x8259 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
|
|
0x0020 PTS.SETUP.TSPT3
|
|
0x8259 PTS.SETUP
|
|
0x8B6D PTS.VARS1
|
|
0x0079 PTS.VRS.AYREGS
|
|
0x8BF4 PTS.VARS2
|
|
0x8A9C PTS.ROUT
|
|
0x826C PTS.INIT
|
|
0x8B6C PTS.VARS
|
|
0x8C7B PTS.VAR0END
|
|
0x0062 PTS.VRS.AdInPtA
|
|
0x8315 PTS.I_PT2
|
|
0x845E PTS.INITPT3
|
|
0x8852 PTS.e_
|
|
0x8831 PTS.SamCnv
|
|
0x87FC PTS.OrnCP
|
|
0x8828 PTS.SamCP
|
|
0x87FF PTS.OrnLD
|
|
0x882B PTS.SamLD
|
|
0x8822 PTS.SamClc2
|
|
0x82B9 PTS.L20
|
|
0x82BB PTS.L21
|
|
0x86CF PTS.Version
|
|
0x830A PTS.NOTS
|
|
0x82FE PTS.TwoPT3s
|
|
0x0087 PTS.VRS
|
|
0x0002 PTS.VRS.ModNum
|
|
0x8993 PTS.TSSub
|
|
0x8301 PTS.AlCoTS_
|
|
0x8B6C PTS.is_ts
|
|
0x861B PTS.PT3PD
|
|
0x8B34 PTS.PT3EMPTYORN
|
|
0x835D PTS.INITCOMMON
|
|
0x8496 PTS.INITPT2
|
|
0x8354 PTS.NOTS2
|
|
0x8555 PTS.PT2PD
|
|
0x8C8A PTS.PT2EMPTYORN
|
|
0x8506 PTS.PTDEC
|
|
0x8995 PTS.PsCalc
|
|
0x8B37 PTS.T_PACK
|
|
0x8C7B PTS.T1_
|
|
0x836B PTS.TP_0
|
|
0x8377 PTS.TP_1
|
|
0x837E 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
|
|
0x8AE4 PTS.NT_DATA
|
|
0x83EF PTS.L3
|
|
0x8AF4 PTS.T_
|
|
0x8D6B PTS.NT_
|
|
0x83DE PTS.L1
|
|
0x83EB PTS.L2
|
|
0x8B00 PTS.TCOLD_1
|
|
0x8410 PTS.CORR_1
|
|
0x8425 PTS.TC_EXIT
|
|
0x841E PTS.CORR_2
|
|
0x8434 PTS.M1
|
|
0x8445 PTS.M2
|
|
0x8C6B PTS.VT_
|
|
0x843D PTS.INITV2
|
|
0x8444 PTS.INITV1
|
|
0x8458 PTS.M3
|
|
0x84D1 PTS.SETMDAD
|
|
0x006C PTS.VRS.Delay
|
|
0x84DF PTS.SETCPPT
|
|
0x84E6 PTS.SETLPPT
|
|
0x84CA PTS.SETPTPT
|
|
0x84D8 PTS.SETORPT
|
|
0x848F 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
|
|
0x84ED PTS.SETENBS
|
|
0x0077 PTS.VRS.EnvBase
|
|
0x84F4 PTS.SETESLD
|
|
0x0070 PTS.VRS.CurESld
|
|
0x84FB PTS.GETIX
|
|
0x8502 PTS.PTDECOD
|
|
0x8508 PTS.PD2_SAM
|
|
0x879E PTS.SETSAM
|
|
0x8557 PTS.PD2_LOOP
|
|
0x850D PTS.PD2_EOff
|
|
0x0014 PTS.CHP.Env_En
|
|
0x8512 PTS.PD2_ENV
|
|
0x8524 PTS.PD2_ORN
|
|
0x877F PTS.SETORN
|
|
0x8529 PTS.PD2_SKIP
|
|
0x0011 PTS.CHP.NNtSkp
|
|
0x852F PTS.PD2_VOL
|
|
0x001C PTS.CHP.Volume
|
|
0x8538 PTS.PD2_DEL
|
|
0x874F PTS.C_DELAY
|
|
0x853D PTS.PD2_GLIS
|
|
0x0015 PTS.CHP.Flags
|
|
0x0016 PTS.CHP.TnSlDl
|
|
0x0005 PTS.CHP.TSlCnt
|
|
0x0017 PTS.CHP.TSlStp
|
|
0x8556 PTS.PD2_LP2
|
|
0x859C PTS.PD2_REL
|
|
0x85A1 PTS.PD2_NOTE
|
|
0x867E PTS.PD_FIN
|
|
0x858C PTS.PD2_PORT
|
|
0x8597 PTS.PD2_STOP
|
|
0x0003 PTS.CHP.CrNsSl
|
|
0x85CD PTS.PD2_EXIT
|
|
0x0012 PTS.CHP.Note
|
|
0x86B7 PTS.PrNote
|
|
0x85CC PTS.NOGLIS2
|
|
0x85C8 PTS.NOPORT2
|
|
0x86DE PTS.LoStep
|
|
0x8699 PTS.SETPORT
|
|
0x0001 PTS.CHP.PsInSm
|
|
0x0000 PTS.CHP.PsInOr
|
|
0x0006 PTS.CHP.CrTnSl
|
|
0x85DC PTS.PD_OrSm
|
|
0x85E3 PTS.PD_SAM_
|
|
0x85E6 PTS.PD_SAM
|
|
0x862A PTS.PD_LOOP
|
|
0x85EB PTS.PD_VOL
|
|
0x862D PTS.PD_LP2
|
|
0x85F4 PTS.PD_EOff
|
|
0x85FC PTS.PD_SorE
|
|
0x8606 PTS.PD_ENV
|
|
0x8764 PTS.SETENV
|
|
0x860B PTS.PD_ORN
|
|
0x8610 PTS.PD_ESAM
|
|
0x86D4 PTS.PrSlide
|
|
0x865F PTS.PD_REL
|
|
0x8665 PTS.PD_NOTE
|
|
0x865A PTS.PD_NOIS
|
|
0x87BA PTS.SPCCOMS
|
|
0x0074 PTS.VRS.Ns_Base
|
|
0x866D PTS.PD_RES
|
|
0x867B PTS.PDSP_
|
|
0x8685 PTS.C_PORTM
|
|
0x0013 PTS.CHP.SlToNt
|
|
0x0019 PTS.CHP.TnDelt
|
|
0x86DD PTS.OLDPRTM
|
|
0x86E3 PTS.NOSIG
|
|
0x86ED PTS.SET_STP
|
|
0x000A PTS.CHP.COnOff
|
|
0x86F9 PTS.C_GLISS
|
|
0x870C PTS.GL36
|
|
0x8716 PTS.C_SMPOS
|
|
0x871C PTS.C_ORPOS
|
|
0x8722 PTS.C_VIBRT
|
|
0x000B PTS.CHP.OnOffD
|
|
0x000C PTS.CHP.OffOnD
|
|
0x873A PTS.C_ENGLS
|
|
0x0072 PTS.VRS.Env_Del
|
|
0x0073 PTS.VRS.CurEDel
|
|
0x006E PTS.VRS.ESldAdd
|
|
0x879D PTS.C_NOP
|
|
0x000F PTS.CHP.SamPtr
|
|
0x87DA PTS.CHREGS
|
|
0x8A17 PTS.Ampl
|
|
0x892D PTS.CH_EXIT
|
|
0x8876 PTS.CSP_
|
|
0x8800 PTS.CH_ORPS
|
|
0x880B PTS.CH_NTP
|
|
0x8811 PTS.CH_NOK
|
|
0x882C PTS.CH_SMPS
|
|
0x0008 PTS.CHP.TnAcc
|
|
0x8863 PTS.CH_NOAC
|
|
0x88BE PTS.CH_AMP
|
|
0x88A9 PTS.CH_STPP
|
|
0x0002 PTS.CHP.CrAmSl
|
|
0x88D8 PTS.CH_NOAM
|
|
0x88D0 PTS.CH_AMIN
|
|
0x88D5 PTS.CH_SVAM
|
|
0x88E1 PTS.CH_APOS
|
|
0x88E7 PTS.CH_VOL
|
|
0x88F2 X PTS.CH_ENV
|
|
0x88F9 PTS.CH_NOEN
|
|
0x891B PTS.NO_ENSL
|
|
0x0004 PTS.CHP.CrEnSl
|
|
0x8913 PTS.NO_ENAC
|
|
0x0076 PTS.VRS.AddToEn
|
|
0x8929 PTS.CH_MIX
|
|
0x0075 PTS.VRS.AddToNs
|
|
0x894D PTS.CH_ONDL
|
|
0x8951 PTS.PLAY_
|
|
0x8A04 PTS.PL2
|
|
0x89D0 PTS.PL1B
|
|
0x89C4 PTS.PL1A
|
|
0x8988 PTS.PLNLP
|
|
0x8995 PTS.NoAlCo
|
|
0x89C1 PTS.PSP_
|
|
0x0064 PTS.VRS.AdInPtB
|
|
0x0066 PTS.VRS.AdInPtC
|
|
0x89E7 PTS.PL1C
|
|
0x89FE PTS.PL1D
|
|
0x8A9C PTS.PL_nts
|
|
0x8AA7 X PTS.r_nts
|
|
0x8AB8 PTS.ROUT_
|
|
0x8ABC PTS.LOUT
|
|
0x8CAD PTS.T_NEW_0
|
|
0x8B1E PTS.TCNEW_0
|
|
0x8CAD PTS.T_OLD_0
|
|
0x8AF4 PTS.TCOLD_0
|
|
0x8C7B PTS.T_NEW_1
|
|
0x8B00 PTS.TCNEW_1
|
|
0x8C7B PTS.T_OLD_1
|
|
0x8CC5 PTS.T_NEW_2
|
|
0x8B29 PTS.TCNEW_2
|
|
0x8C93 PTS.T_OLD_2
|
|
0x8B02 PTS.TCOLD_2
|
|
0x8CAB PTS.T_NEW_3
|
|
0x8B14 PTS.TCNEW_3
|
|
0x8CAB PTS.T_OLD_3
|
|
0x8B15 PTS.TCOLD_3
|
|
0x001D PTS.CHP
|
|
0x0000 X PTS.VRS.CurPos
|
|
0x0001 X PTS.VRS.PosSub
|
|
0x8E2B X PTS.VARSEND
|
|
0x8E2B X PTS.MDLADDR
|
|
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 PT3.Header.FreqTable
|
|
0x0064 X PT3.Header.Tempo
|
|
0x0065 X PT3.Header.Length
|
|
0x0066 X PT3.Header.Loop
|
|
0x0067 X PT3.Header.Patterns
|
|
0x0069 PT3.Header.Samples
|
|
0x00A9 PT3.Header.Ornaments
|
|
0x00C9 PT3.Header.Positions
|
|
0x8E2B PT3.Start
|
|
0x8E4B PT3.CheckFormat.samples
|
|
0x8E55 PT3.CheckFormat.ornaments
|
|
0x8E65 PT3.CheckFormat.positions
|
|
0x8E6A PT3.CheckFormat.div3
|
|
0x8E72 PT3.CheckFormat.posok
|
|
0x8E74 X PT3.CheckFormat.fail
|
|
0x8A88 X PT3.Play
|
|
0x825A X PT3.Mute
|
|
0x8E77 PT3.End
|
|
0x0085 X PT2.Header
|
|
0x0000 X PT2.Header.Tempo
|
|
0x0001 X PT2.Header.Length
|
|
0x0002 X PT2.Header.Loop
|
|
0x0003 PT2.Header.Samples
|
|
0x0043 X PT2.Header.Ornaments
|
|
0x0063 PT2.Header.Patterns
|
|
0x0065 PT2.Header.Name
|
|
0x0083 PT2.Header.Positions
|
|
0x8E77 PT2.Start
|
|
0x8E8D PT2.CheckFormat.samorns
|
|
0x8EA9 PT2.CheckFormat.positions
|
|
0x8EB4 X PT2.CheckFormat.fail
|
|
0x8A88 X PT2.Play
|
|
0x825A X PT2.Mute
|
|
0x8EB7 PT2.End
|
|
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
|
|
0x8EB7 TS.Start
|
|
0x8EBC TS.CheckFormat
|
|
0x8EBF TS.CheckFormat.findfooter
|
|
0x8ECE TS.CheckFooter
|
|
0x8EFA TS.End
|
|
0x8A88 X TS.Play
|
|
0x825A X TS.Mute
|
|
0x0001 TFC.newtfm
|
|
0x00F8 TFC.statuschip0
|
|
0x00F9 TFC.statuschip1
|
|
0x0022 X TFC.Header
|
|
0x0000 X TFC.Header.signature
|
|
0x0006 X TFC.Header.version
|
|
0x0009 X TFC.Header.intfreq
|
|
0x000A TFC.Header.tfmptrs
|
|
0x0016 X TFC.Header.ssgptrs
|
|
0x0008 TFC.TFMData
|
|
0x0000 TFC.TFMData.addr
|
|
0x0002 TFC.TFMData.skip
|
|
0x0003 TFC.TFMData.blkcnt
|
|
0x0004 TFC.TFMData.blkretaddr
|
|
0x0005 TFC.TFMData.loopaddr
|
|
0x0006 TFC.TFMData.tfmlow
|
|
0x0007 TFC.TFMData.tfmhigh
|
|
0x8EFA TFC.Start
|
|
0x9173 TFC.End
|
|
0x913B TFC.TFM.Init
|
|
0x9143 TFC.TFM.A
|
|
0x8F5E TFC.Init.tfminitab
|
|
0x8F6A TFC.Init.tfminitab_end
|
|
0x8F45 TFC.Init.tfmini0
|
|
0x8F54 TFC.Init.tfminiHL
|
|
0x9143 TFC.TFM.A.addr
|
|
0x914B TFC.TFM.B.addr
|
|
0x9153 TFC.TFM.C.addr
|
|
0x915B TFC.TFM.D.addr
|
|
0x9163 TFC.TFM.E.addr
|
|
0x916B TFC.TFM.F.addr
|
|
0x8FD9 TFC.selChip0
|
|
0x8F78 TFC.Mute.tfminiPP
|
|
0x8FDD TFC.selChip1
|
|
0x8FC0 TFC.Mute.writeregsset
|
|
0x8FC8 TFC.Mute.writereg
|
|
0x8FBC TFC.Mute.selRegA
|
|
0x9026 TFC.PlayChannel
|
|
0x914B TFC.TFM.B
|
|
0x9153 TFC.TFM.C
|
|
0x915B TFC.TFM.D
|
|
0x9163 TFC.TFM.E
|
|
0x916B TFC.TFM.F
|
|
0x007E TFC.bb
|
|
0x007F TFC.be
|
|
0x90E9 TFC.PlayChannel.skiper
|
|
0x9050 TFC.PlayChannel.noframe
|
|
0x9056 TFC.PlayChannel.tfmframe
|
|
0x9040 TFC.PlayChannel.begin
|
|
0x9048 TFC.PlayChannel.end
|
|
0x90DC TFC.PlayChannel.HLskiper
|
|
0x907D TFC.PlayChannel.noffX
|
|
0x9094 TFC.PlayChannel.nofrqX
|
|
0x90FE TFC.PlayChannel.outTone
|
|
0x9127 TFC.PlayChannel.OutRegs
|
|
0x90D5 TFC.PlayChannel.storeaddr
|
|
0x90B7 TFC.PlayChannel.block
|
|
0x90C6 TFC.PlayChannel.subframe
|
|
0x90CC TFC.PlayChannel.OLDfar
|
|
0x90CE TFC.PlayChannel.OLDnear
|
|
0x90ED TFC.PlayChannel.slide
|
|
0x913B X TFC.TFM.Init.addr
|
|
0x913D X TFC.TFM.Init.skip
|
|
0x913E X TFC.TFM.Init.blkcnt
|
|
0x913F X TFC.TFM.Init.blkretaddr
|
|
0x9140 X TFC.TFM.Init.loopaddr
|
|
0x9141 X TFC.TFM.Init.tfmlow
|
|
0x9142 X TFC.TFM.Init.tfmhigh
|
|
0x9145 X TFC.TFM.A.skip
|
|
0x9146 X TFC.TFM.A.blkcnt
|
|
0x9147 X TFC.TFM.A.blkretaddr
|
|
0x9148 X TFC.TFM.A.loopaddr
|
|
0x9149 X TFC.TFM.A.tfmlow
|
|
0x914A X TFC.TFM.A.tfmhigh
|
|
0x914D X TFC.TFM.B.skip
|
|
0x914E X TFC.TFM.B.blkcnt
|
|
0x914F X TFC.TFM.B.blkretaddr
|
|
0x9150 X TFC.TFM.B.loopaddr
|
|
0x9151 X TFC.TFM.B.tfmlow
|
|
0x9152 X TFC.TFM.B.tfmhigh
|
|
0x9155 X TFC.TFM.C.skip
|
|
0x9156 X TFC.TFM.C.blkcnt
|
|
0x9157 X TFC.TFM.C.blkretaddr
|
|
0x9158 X TFC.TFM.C.loopaddr
|
|
0x9159 X TFC.TFM.C.tfmlow
|
|
0x915A X TFC.TFM.C.tfmhigh
|
|
0x915D X TFC.TFM.D.skip
|
|
0x915E X TFC.TFM.D.blkcnt
|
|
0x915F X TFC.TFM.D.blkretaddr
|
|
0x9160 X TFC.TFM.D.loopaddr
|
|
0x9161 X TFC.TFM.D.tfmlow
|
|
0x9162 X TFC.TFM.D.tfmhigh
|
|
0x9165 X TFC.TFM.E.skip
|
|
0x9166 X TFC.TFM.E.blkcnt
|
|
0x9167 X TFC.TFM.E.blkretaddr
|
|
0x9168 X TFC.TFM.E.loopaddr
|
|
0x9169 X TFC.TFM.E.tfmlow
|
|
0x916A X TFC.TFM.E.tfmhigh
|
|
0x916D X TFC.TFM.F.skip
|
|
0x916E X TFC.TFM.F.blkcnt
|
|
0x916F X TFC.TFM.F.blkretaddr
|
|
0x9170 X TFC.TFM.F.loopaddr
|
|
0x9171 X TFC.TFM.F.tfmlow
|
|
0x9172 X TFC.TFM.F.tfmhigh
|
|
0x9173 module
|