8494 lines
341 KiB
Plaintext
8494 lines
341 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 "uni.asm"
|
|
0001+ 8000 ifndef _uni_asm_defined
|
|
0002+ 8000 define _uni_asm_defined
|
|
0003+ 8000
|
|
0004+ 8000 module UNI
|
|
0005+ 8000 21 73 92 ld hl,End
|
|
0006+ 8003 18 06 jr Init
|
|
0007+ 8005 C3 00 00 Play jp 0
|
|
0008+ 8008 C3 00 00 Mute jp 0
|
|
0009+ 800B
|
|
0010+ 800B Init ;check most stable first
|
|
0011+ 800B CD 28 80 call .tryMTC
|
|
0012+ 800E C4 39 80 call nz,.tryTFC
|
|
0013+ 8011 C4 4A 80 call nz,.tryTS
|
|
0014+ 8014 C4 5B 80 call nz,.tryPT2
|
|
0015+ 8017 C4 6C 80 call nz,.tryPT3
|
|
0016+ 801A C8 ret z
|
|
0017+ 801B 21 34 00 ld hl,52
|
|
0018+ 801F 54 5D ld d,h,e,l
|
|
0019+ 8020 22 06 80 .addr ld (Play+1),hl
|
|
0020+ 8023 ED 53 09 80 ld (Mute+1),de
|
|
0021+ 8027 C9 ret
|
|
0022+ 8028
|
|
0023+ 8028 .tryMTC
|
|
0024+ 8028 E5 push hl
|
|
0025+ 8029 CD 7D 80 call MTC.CheckFormat
|
|
0026+ 802C E1 pop hl
|
|
0027+ 802D C0 ret nz
|
|
0028+ 802E CD 9C 80 call MTC.Init
|
|
0029+ 8031 21 D9 80 ld hl,MTC.Play
|
|
0030+ 8034 11 F7 80 ld de,MTC.Mute
|
|
0031+ 8037 18 E7 jr .addr
|
|
0032+ 8039
|
|
0033+ 8039 .tryTFC
|
|
0034+ 8039 E5 push hl
|
|
0035+ 803A CD 05 90 call TFC.CheckFormat
|
|
0036+ 803D E1 pop hl
|
|
0037+ 803E C0 ret nz
|
|
0038+ 803F CD 2E 90 call TFC.Init
|
|
0039+ 8042 21 E1 90 ld hl,TFC.Play
|
|
0040+ 8045 11 6A 90 ld de,TFC.Mute
|
|
0041+ 8048 18 D6 jr .addr
|
|
0042+ 804A
|
|
0043+ 804A .tryTS
|
|
0044+ 804A E5 push hl
|
|
0045+ 804B CD BC 8F call TS.CheckFormat
|
|
0046+ 804E E1 pop hl
|
|
0047+ 804F C0 ret nz
|
|
0048+ 8050 CD B7 8F call TS.Init
|
|
0049+ 8053 21 88 8B ld hl,TS.Play
|
|
0050+ 8056 11 5A 83 ld de,TS.Mute
|
|
0051+ 8059 18 C5 jr .addr
|
|
0052+ 805B
|
|
0053+ 805B .tryPT2
|
|
0054+ 805B E5 push hl
|
|
0055+ 805C CD 7C 8F call PT2.CheckFormat
|
|
0056+ 805F E1 pop hl
|
|
0057+ 8060 C0 ret nz
|
|
0058+ 8061 CD 77 8F call PT2.Init
|
|
0059+ 8064 21 88 8B ld hl,PT2.Play
|
|
0060+ 8067 11 5A 83 ld de,PT2.Mute
|
|
0061+ 806A 18 B4 jr .addr
|
|
0062+ 806C
|
|
0063+ 806C .tryPT3
|
|
0064+ 806C E5 push hl
|
|
0065+ 806D CD 30 8F call PT3.CheckFormat
|
|
0066+ 8070 E1 pop hl
|
|
0067+ 8071 C0 ret nz
|
|
0068+ 8072 CD 2B 8F call PT3.Init
|
|
0069+ 8075 21 88 8B ld hl,PT3.Play
|
|
0070+ 8078 11 5A 83 ld de,PT3.Mute
|
|
0071+ 807B 18 A3 jr .addr
|
|
0072+ 807D
|
|
0073+ 807D endmod
|
|
0074+ 807D
|
|
0075+ 807D define HaveFormatCheck
|
|
0076+ 807D define NoPrologue
|
|
0077+ 807D include "mtc.asm"
|
|
0001++ 807D ifndef _mtc_asm_defined
|
|
0002++ 807D define _mtc_asm_defined
|
|
0003++ 807D
|
|
0004++ 807D module MTC
|
|
0005++ 807D
|
|
0006++ 807D ;enum-like
|
|
0007++ 807D struct StreamType
|
|
0008++ 807D~ PT3 db 0
|
|
0009++ 807D~ PT2 db 0
|
|
0010++ 807D~ TS db 0
|
|
0011++ 807D~ TFC db 0
|
|
0012++ 807D~ Unknown db 0
|
|
0013++ 807D ends
|
|
0014++ 807D
|
|
0015++ 807D struct StreamData
|
|
0016++ 807D~ Type db 0
|
|
0017++ 807D~ Data1 dw 0
|
|
0018++ 807D~ Data2 dw 0
|
|
0019++ 807D~ Init dw 0
|
|
0020++ 807D~ Play dw 0
|
|
0021++ 807D~ Mute dw 0
|
|
0022++ 807D ends
|
|
0023++ 807D
|
|
0024++ 807D Start
|
|
0025++ 807D ifndef NoPrologue
|
|
0026++ 807D~ ld hl,End
|
|
0027++ 807D~ jr Init
|
|
0028++ 807D~ jp Play
|
|
0029++ 807D~ jp Mute
|
|
0030++ 807D endif
|
|
0031++ 807D
|
|
0032++ 807D ifdef HaveFormatCheck
|
|
0033++ 807D
|
|
0034++ 807D include "format.asm"
|
|
0001+++807D ;some format checking macros
|
|
0002+++807D ifndef _format_asm_defined
|
|
0003+++807D define _format_asm_defined
|
|
0004+++807D
|
|
0005+++807D macro LessOrEqual number
|
|
0006+++807D~ ld a,number
|
|
0007+++807D~ cp (hl)
|
|
0008+++807D~ inc hl
|
|
0009+++807D~ ret c
|
|
0010+++807D endm
|
|
0011+++807D
|
|
0012+++807D macro Greater number
|
|
0013+++807D~ ld a,(hl)
|
|
0014+++807D~ inc hl
|
|
0015+++807D~ cp number
|
|
0016+++807D~ ret c
|
|
0017+++807D endm
|
|
0018+++807D
|
|
0019+++807D macro AnyByte
|
|
0020+++807D~ inc hl
|
|
0021+++807D endm
|
|
0022+++807D
|
|
0023+++807D macro AnyBytes count
|
|
0024+++807D~ if count > 7
|
|
0025+++807D~ ld a,l
|
|
0026+++807D~ add a,count
|
|
0027+++807D~ ld l,a
|
|
0028+++807D~ adc a,h
|
|
0029+++807D~ sub l
|
|
0030+++807D~ ld h,a
|
|
0031+++807D~ else
|
|
0032+++807D~ dup count
|
|
0033+++807D~ inc hl
|
|
0034+++807D~ edup
|
|
0035+++807D~ endif
|
|
0036+++807D endm
|
|
0037+++807D
|
|
0038+++807D macro EqualTo number
|
|
0039+++807D~ ld a,number
|
|
0040+++807D~ cp (hl)
|
|
0041+++807D~ inc hl
|
|
0042+++807D~ ret nz
|
|
0043+++807D endm
|
|
0044+++807D
|
|
0045+++807D endif
|
|
0046+++807D
|
|
0035++ 807D
|
|
0036++ 807D ;in HL - module addr
|
|
0037++ 807D ;out Z - is mtc
|
|
0038++ 807D CheckFormat
|
|
0039++ 807D EqualTo "M"
|
|
0039++ 807D 3E 4D > ld a,number
|
|
0039++ 807F BE > cp (hl)
|
|
0039++ 8080 23 > inc hl
|
|
0039++ 8081 C0 > ret nz
|
|
0040++ 8082 EqualTo "T"
|
|
0040++ 8082 3E 54 > ld a,number
|
|
0040++ 8084 BE > cp (hl)
|
|
0040++ 8085 23 > inc hl
|
|
0040++ 8086 C0 > ret nz
|
|
0041++ 8087 EqualTo "C"
|
|
0041++ 8087 3E 43 > ld a,number
|
|
0041++ 8089 BE > cp (hl)
|
|
0041++ 808A 23 > inc hl
|
|
0041++ 808B C0 > ret nz
|
|
0042++ 808C EqualTo "1"
|
|
0042++ 808C 3E 31 > ld a,number
|
|
0042++ 808E BE > cp (hl)
|
|
0042++ 808F 23 > inc hl
|
|
0042++ 8090 C0 > ret nz
|
|
0043++ 8091 EqualTo 0
|
|
0043++ 8091 3E 00 > ld a,number
|
|
0043++ 8093 BE > cp (hl)
|
|
0043++ 8094 23 > inc hl
|
|
0043++ 8095 C0 > ret nz
|
|
0044++ 8096 EqualTo 0
|
|
0044++ 8096 3E 00 > ld a,number
|
|
0044++ 8098 BE > cp (hl)
|
|
0044++ 8099 23 > inc hl
|
|
0044++ 809A C0 > ret nz
|
|
0045++ 809B C9 ret
|
|
0046++ 809C
|
|
0047++ 809C display "MTC checker size: ",$-CheckFormat
|
|
0048++ 809C
|
|
0049++ 809C endif
|
|
0050++ 809C
|
|
0051++ 809C ;in HL - module addr
|
|
0052++ 809C DD 21 4E 81 Init ld ix,Streams
|
|
0053++ 80A0 DD 36 00 04 ld (ix+StreamData.Type),StreamType.Unknown
|
|
0054++ 80A4 CD 17 81 call ParseChunk
|
|
0055++ 80A7 FE 00 cp ChunkId.MTC1
|
|
0056++ 80A9 CC 1C 82 call z,ParseMTC1
|
|
0057++ 80AC CD E6 82 call MergeStreams
|
|
0058++ 80AF DD 21 4E 81 ld ix,Streams
|
|
0059++ 80B3 .initstreams
|
|
0060++ 80B3 DD 7E 00 ld a,(ix+StreamData.Type)
|
|
0061++ 80B6 FE 04 cp StreamType.Unknown
|
|
0062++ 80B8 C8 ret z
|
|
0063++ 80B9 DD 6E 01 ld l,(ix+StreamData.Data1)
|
|
0064++ 80BC DD 66 02 ld h,(ix+StreamData.Data1+1)
|
|
0065++ 80BF DD 5E 03 ld e,(ix+StreamData.Data2)
|
|
0066++ 80C2 DD 56 04 ld d,(ix+StreamData.Data2+1)
|
|
0067++ 80C5 DD 4E 05 ld c,(ix+StreamData.Init)
|
|
0068++ 80C8 DD 46 06 ld b,(ix+StreamData.Init+1)
|
|
0069++ 80CB DD E5 push ix
|
|
0070++ 80CD CD 15 81 call jp_bc
|
|
0071++ 80D0 DD E1 pop ix
|
|
0072++ 80D2 01 0B 00 ld bc,StreamData
|
|
0073++ 80D5 DD 09 add ix,bc
|
|
0074++ 80D7 18 DA jr .initstreams
|
|
0075++ 80D9
|
|
0076++ 80D9 DD 21 4E 81 Play ld ix,Streams
|
|
0077++ 80DD .playstreams
|
|
0078++ 80DD DD 7E 00 ld a,(ix+StreamData.Type)
|
|
0079++ 80E0 FE 04 cp StreamType.Unknown
|
|
0080++ 80E2 C8 ret z
|
|
0081++ 80E3 DD 4E 07 ld c,(ix+StreamData.Play)
|
|
0082++ 80E6 DD 46 08 ld b,(ix+StreamData.Play+1)
|
|
0083++ 80E9 DD E5 push ix
|
|
0084++ 80EB CD 15 81 call jp_bc
|
|
0085++ 80EE DD E1 pop ix
|
|
0086++ 80F0 01 0B 00 ld bc,StreamData
|
|
0087++ 80F3 DD 09 add ix,bc
|
|
0088++ 80F5 18 E6 jr .playstreams
|
|
0089++ 80F7
|
|
0090++ 80F7 DD 21 4E 81 Mute ld ix,Streams
|
|
0091++ 80FB .mutestreams
|
|
0092++ 80FB DD 7E 00 ld a,(ix+StreamData.Type)
|
|
0093++ 80FE FE 04 cp StreamType.Unknown
|
|
0094++ 8100 C8 ret z
|
|
0095++ 8101 DD 4E 09 ld c,(ix+StreamData.Mute)
|
|
0096++ 8104 DD 46 0A ld b,(ix+StreamData.Mute+1)
|
|
0097++ 8107 DD E5 push ix
|
|
0098++ 8109 CD 15 81 call jp_bc
|
|
0099++ 810C DD E1 pop ix
|
|
0100++ 810E 01 0B 00 ld bc,StreamData
|
|
0101++ 8111 DD 09 add ix,bc
|
|
0102++ 8113 18 E6 jr .mutestreams
|
|
0103++ 8115
|
|
0104++ 8115 C5 jp_bc push bc
|
|
0105++ 8116 C9 ret
|
|
0106++ 8117
|
|
0107++ 8117 ;in hl - chunk start
|
|
0108++ 8117 ;out a - chunkid
|
|
0109++ 8117 ;out hl - chunk data start
|
|
0110++ 8117 ;out bc - chunk data size
|
|
0111++ 8117 ;corrupt de
|
|
0112++ 8117 ParseChunk
|
|
0113++ 8117 11 00 82 ld de,ChunkId
|
|
0114++ 811A .checkid
|
|
0115++ 811A 06 04 ld b,4
|
|
0116++ 811C dup 4
|
|
0117++ 811C 1A > ld a,(de)
|
|
0118++ 811D 1C > inc e
|
|
0119++ 811E BE > cp (hl)
|
|
0120++ 811F 23 > inc hl
|
|
0121++ 8120 20 01 > jr nz,$+3
|
|
0122++ 8122 05 > dec b
|
|
0117++ 8123 1A > ld a,(de)
|
|
0118++ 8124 1C > inc e
|
|
0119++ 8125 BE > cp (hl)
|
|
0120++ 8126 23 > inc hl
|
|
0121++ 8127 20 01 > jr nz,$+3
|
|
0122++ 8129 05 > dec b
|
|
0117++ 812A 1A > ld a,(de)
|
|
0118++ 812B 1C > inc e
|
|
0119++ 812C BE > cp (hl)
|
|
0120++ 812D 23 > inc hl
|
|
0121++ 812E 20 01 > jr nz,$+3
|
|
0122++ 8130 05 > dec b
|
|
0117++ 8131 1A > ld a,(de)
|
|
0118++ 8132 1C > inc e
|
|
0119++ 8133 BE > cp (hl)
|
|
0120++ 8134 23 > inc hl
|
|
0121++ 8135 20 01 > jr nz,$+3
|
|
0122++ 8137 05 > dec b
|
|
0124++ 8138 ;nz if last byte is not matched
|
|
0125++ 8138 ;nz if b != 0 (not all bytes matched)
|
|
0126++ 8138 7B ld a,e
|
|
0127++ 8139 28 0A jr z,.matched
|
|
0128++ 813B FE 1C cp ChunkId.Unknown
|
|
0129++ 813D 28 08 jr z,.getdata
|
|
0130++ 8142 2B 2B 2B 2B dec hl,hl,hl,hl
|
|
0131++ 8143 18 D5 jr .checkid
|
|
0132++ 8145 .matched
|
|
0133++ 8145 D6 04 sub 4
|
|
0134++ 8147 .getdata
|
|
0135++ 8147 ;skip higher bytes of size, assume they are zero
|
|
0136++ 8147 23 inc hl
|
|
0137++ 8148 23 inc hl
|
|
0138++ 8149 46 ld b,(hl)
|
|
0139++ 814A 23 inc hl
|
|
0140++ 814B 4E ld c,(hl)
|
|
0141++ 814C 23 inc hl
|
|
0142++ 814D C9 ret
|
|
0143++ 814E
|
|
0144++ 814E ;put streams in gap
|
|
0145++ 814E Streams
|
|
0146++ 814E MinStreamsCount=3 ;approx: ts+tfm
|
|
0147++ 814E 00 ds MinStreamsCount*StreamData ;approx
|
|
0148++ 816F Streams.End
|
|
0149++ 816F display "MTC: loosed ",256-low $," bytes"
|
|
0150++ 816F 00 align 256
|
|
0151++ 8200
|
|
0152++ 8200 ChunkId
|
|
0153++ 8200 .MTC1=low $
|
|
0154++ 8200 4D 54 43 31 db "MTC1"
|
|
0155++ 8204 .TRCK=low $
|
|
0156++ 8204 54 52 43 4B db "TRCK"
|
|
0157++ 8208 .DATA=low $
|
|
0158++ 8208 44 41 54 41 db "DATA"
|
|
0159++ 820C .NAME=low $
|
|
0160++ 820C 4E 41 4D 45 db "NAME"
|
|
0161++ 8210 .AUTH=low $
|
|
0162++ 8210 41 55 54 48 db "AUTH"
|
|
0163++ 8214 .ANNO=low $
|
|
0164++ 8214 41 4E 4E 4F db "ANNO"
|
|
0165++ 8218 .PROP=low $
|
|
0166++ 8218 50 52 4F 50 db "PROP"
|
|
0167++ 821C .Unknown=low $
|
|
0168++ 821C
|
|
0169++ 821C MaxStreamsCount=(ChunkId-Streams)/StreamData
|
|
0170++ 821C display "MTC: max streams ",MaxStreamsCount
|
|
0171++ 821C
|
|
0172++ 821C macro MoveNextChunk
|
|
0173++ 821C~ ;chunk is always aligned at word boundary, so correct odd length
|
|
0174++ 821C~ push bc
|
|
0175++ 821C~ pop af
|
|
0176++ 821C~ adc hl,bc
|
|
0177++ 821C endm
|
|
0178++ 821C
|
|
0179++ 821C ;in hl - content
|
|
0180++ 821C ;in bc - size
|
|
0181++ 821C ParseMTC1
|
|
0182++ 821C E5 push hl
|
|
0183++ 821D 09 add hl,bc
|
|
0184++ 821E E3 ex (sp),hl
|
|
0185++ 821F ; (sp) - end of avail data
|
|
0186++ 821F .nextchunk
|
|
0187++ 821F CD 17 81 call ParseChunk
|
|
0188++ 8222 E5 C5 push hl,bc
|
|
0189++ 8224 FE 04 cp ChunkId.TRCK
|
|
0190++ 8226 CC 37 82 call z,ParseTrack
|
|
0191++ 8229 C1 E1 pop bc,hl
|
|
0192++ 822B MoveNextChunk
|
|
0192++ 822B C5 > push bc
|
|
0192++ 822C F1 > pop af
|
|
0192++ 822D ED 4A > adc hl,bc
|
|
0193++ 822F C1 pop bc
|
|
0194++ 8230 ;hl- end of chunk
|
|
0195++ 8230 ;de- end of avail
|
|
0196++ 8230 ED 42 sbc hl,bc
|
|
0197++ 8232 C8 ret z ;last chunk
|
|
0198++ 8233 09 add hl,bc
|
|
0199++ 8234 C5 push bc
|
|
0200++ 8235 18 E8 jr .nextchunk
|
|
0201++ 8237
|
|
0202++ 8237 ;in hl - content
|
|
0203++ 8237 ;in bc - size
|
|
0204++ 8237 ParseTrack
|
|
0205++ 8237 E5 push hl
|
|
0206++ 8238 09 add hl,bc
|
|
0207++ 8239 E3 ex (sp),hl
|
|
0208++ 823A ; (sp) - end of avail data
|
|
0209++ 823A .nextchunk
|
|
0210++ 823A CD 17 81 call ParseChunk
|
|
0211++ 823D E5 C5 push hl,bc
|
|
0212++ 823F FE 08 cp ChunkId.DATA
|
|
0213++ 8241 CC 56 82 call z,ParseData
|
|
0214++ 8244 08 exa
|
|
0215++ 8245 C1 E1 pop bc,hl
|
|
0216++ 8247 MoveNextChunk
|
|
0216++ 8247 C5 > push bc
|
|
0216++ 8248 F1 > pop af
|
|
0216++ 8249 ED 4A > adc hl,bc
|
|
0217++ 824B C1 pop bc
|
|
0218++ 824C 08 exa
|
|
0219++ 824D C8 ret z ;data is parsed
|
|
0220++ 824E ;hl- end of chunk
|
|
0221++ 824E ;de- end of avail
|
|
0222++ 824E A7 and a
|
|
0223++ 824F ED 42 sbc hl,bc
|
|
0224++ 8251 C8 ret z ;last chunk
|
|
0225++ 8252 09 add hl,bc
|
|
0226++ 8253 C5 push bc
|
|
0227++ 8254 18 E4 jr .nextchunk
|
|
0228++ 8256
|
|
0229++ 8256 ;in hl - content
|
|
0230++ 8256 ;in bc - size
|
|
0231++ 8256 ;out Z - data parsed and added as stream
|
|
0232++ 8256 ParseData
|
|
0233++ 8256 CD 62 82 call ParseTFC
|
|
0234++ 8259 C4 84 82 call nz,ParseTS
|
|
0235++ 825C C4 91 82 call nz,ParsePT2
|
|
0236++ 825F 20 43 jr nz,ParsePT3
|
|
0237++ 8261 C9 ret
|
|
0238++ 8262
|
|
0239++ 8262 ParseTFC
|
|
0240++ 8262 E5 C5 push hl,bc
|
|
0241++ 8264 CD 05 90 call TFC.CheckFormat
|
|
0242++ 8267 C1 E1 pop bc,hl
|
|
0243++ 8269 C0 ret nz
|
|
0244++ 826A 3E 03 ld a,StreamType.TFC
|
|
0245++ 826C D9 exx
|
|
0246++ 826D 21 2E 90 ld hl,TFC.Init
|
|
0247++ 8270 11 E1 90 ld de,TFC.Play
|
|
0248++ 8273 01 6A 90 ld bc,TFC.Mute
|
|
0249++ 8276 CD C3 82 call FillStream
|
|
0250++ 8279 AddStream
|
|
0251++ 8279 01 0B 00 ld bc,StreamData
|
|
0252++ 827C DD 09 add ix,bc
|
|
0253++ 827E DD 36 00 04 ld (ix+StreamData.Type),StreamType.Unknown
|
|
0254++ 8282 AF xor a;set Z
|
|
0255++ 8283 C9 ret
|
|
0256++ 8284
|
|
0257++ 8284 ParseTS
|
|
0258++ 8284 E5 C5 push hl,bc
|
|
0259++ 8286 CD CD 8F call TS.CheckFormatKnownSize
|
|
0260++ 8289 C1 E1 pop bc,hl
|
|
0261++ 828B C0 ret nz
|
|
0262++ 828C CD B7 82 call FillTS
|
|
0263++ 828F 18 E8 jr AddStream
|
|
0264++ 8291
|
|
0265++ 8291 ParsePT2
|
|
0266++ 8291 E5 C5 push hl,bc
|
|
0267++ 8293 CD 7C 8F call PT2.CheckFormat
|
|
0268++ 8296 C1 E1 pop bc,hl
|
|
0269++ 8298 C0 ret nz
|
|
0270++ 8299 3E 01 ld a,StreamType.PT2
|
|
0271++ 829B D9 exx
|
|
0272++ 829C 21 77 8F ld hl,PT2.Init
|
|
0273++ 829F CD BD 82 call FillPts
|
|
0274++ 82A2 18 D5 jr AddStream
|
|
0275++ 82A4
|
|
0276++ 82A4 ParsePT3
|
|
0277++ 82A4 E5 C5 push hl,bc
|
|
0278++ 82A6 CD 30 8F call PT3.CheckFormat
|
|
0279++ 82A9 C1 E1 pop bc,hl
|
|
0280++ 82AB C0 ret nz
|
|
0281++ 82AC 3E 00 ld a,StreamType.PT3
|
|
0282++ 82AE D9 exx
|
|
0283++ 82AF 21 2B 8F ld hl,PT3.Init
|
|
0284++ 82B2 CD BD 82 call FillPts
|
|
0285++ 82B5 18 C2 jr AddStream
|
|
0286++ 82B7
|
|
0287++ 82B7 3E 02 FillTS ld a,StreamType.TS
|
|
0288++ 82B9 D9 exx
|
|
0289++ 82BA 21 B7 8F ld hl,TS.Init
|
|
0290++ 82BD 11 88 8B FillPts ld de,PTS.PLAY
|
|
0291++ 82C0 01 5A 83 ld bc,PTS.MUTE
|
|
0292++ 82C3 FillStream
|
|
0293++ 82C3 DD 77 00 ld (ix+StreamData.Type),a
|
|
0294++ 82C6 DD 75 05 ld (ix+StreamData.Init),l
|
|
0295++ 82C9 DD 74 06 ld (ix+StreamData.Init+1),h
|
|
0296++ 82CC DD 73 07 ld (ix+StreamData.Play),e
|
|
0297++ 82CF DD 72 08 ld (ix+StreamData.Play+1),d
|
|
0298++ 82D2 DD 71 09 ld (ix+StreamData.Mute),c
|
|
0299++ 82D5 DD 70 0A ld (ix+StreamData.Mute+1),b
|
|
0300++ 82D8 D9 exx
|
|
0301++ 82D9 DD 75 01 ld (ix+StreamData.Data1),l
|
|
0302++ 82DC DD 74 02 ld (ix+StreamData.Data1+1),h
|
|
0303++ 82DF DD 73 03 ld (ix+StreamData.Data2),e
|
|
0304++ 82E2 DD 72 04 ld (ix+StreamData.Data2+1),d
|
|
0305++ 82E5 C9 ret
|
|
0306++ 82E6
|
|
0307++ 82E6 ;some business-logic related to supported players
|
|
0308++ 82E6 MergeStreams
|
|
0309++ 82E6 3A 4E 81 ld a,(Streams+StreamData.Type)
|
|
0310++ 82E9 FE 04 cp StreamType.Unknown
|
|
0311++ 82EB C8 ret z ;no streams
|
|
0312++ 82EC 3A 59 81 ld a,(Streams+StreamData+StreamData.Type)
|
|
0313++ 82EF FE 04 cp StreamType.Unknown
|
|
0314++ 82F1 C8 ret z ;single stream
|
|
0315++ 82F2
|
|
0316++ 82F2 ;sort streams according to type, use simple bubblesort
|
|
0317++ 82F2 Sort
|
|
0318++ 82F2 assert 0 == ((Streams ^ Streams.End) >> 8)
|
|
0319++ 82F2 assert 0 == StreamData.Type
|
|
0320++ 82F2 11 4E 81 ld de,Streams
|
|
0321++ 82F5 21 59 81 ld hl,Streams+StreamData
|
|
0322++ 82F8 0E 00 ld c,0;swaps mark
|
|
0323++ 82FA .cycle
|
|
0324++ 82FA 1A ld a,(de)
|
|
0325++ 82FB FE 04 cp StreamType.Unknown
|
|
0326++ 82FD 28 1A jr z,.end
|
|
0327++ 82FF BE cp (hl)
|
|
0328++ 8300 38 10 jr c,.next
|
|
0329++ 8302 28 0E jr z,.next
|
|
0330++ 8304 06 0B ld b,StreamData
|
|
0331++ 8306 .swapitems
|
|
0332++ 8306 1A ld a,(de)
|
|
0333++ 8307 4E ld c,(hl)
|
|
0334++ 8308 77 ld (hl),a
|
|
0335++ 8309 79 ld a,c
|
|
0336++ 830A 12 ld (de),a
|
|
0337++ 830B 2C inc l
|
|
0338++ 830C 1C inc e
|
|
0339++ 830D 10 F7 djnz .swapitems
|
|
0340++ 830F 4C ld c,h
|
|
0341++ 8310 18 E8 jr .cycle
|
|
0342++ 8312 .next
|
|
0343++ 8312 5D ld e,l
|
|
0344++ 8313 7D ld a,l
|
|
0345++ 8314 C6 0B add a,StreamData
|
|
0346++ 8316 6F ld l,a
|
|
0347++ 8317 18 E1 jr .cycle
|
|
0348++ 8319 .end
|
|
0349++ 8319 79 ld a,c
|
|
0350++ 831A A7 and a
|
|
0351++ 831B 20 D5 jr nz,Sort
|
|
0352++ 831D ;try merge streams
|
|
0353++ 831D ; X X merged to X (last is taken)
|
|
0354++ 831D ; PT3 PT3 merged to TS
|
|
0355++ 831D Merge
|
|
0356++ 831D assert 0 == StreamData.Type
|
|
0357++ 831D 11 4E 81 ld de,Streams
|
|
0358++ 8320 21 59 81 ld hl,Streams+StreamData
|
|
0359++ 8323 .cycle
|
|
0360++ 8323 1A ld a,(de)
|
|
0361++ 8324 FE 04 cp StreamType.Unknown
|
|
0362++ 8326 C8 ret z
|
|
0363++ 8327 BE cp (hl)
|
|
0364++ 8328 28 07 jr z,.perform
|
|
0365++ 832A 5D ld e,l
|
|
0366++ 832B 7D ld a,l
|
|
0367++ 832C C6 0B add a,StreamData
|
|
0368++ 832E 6F ld l,a
|
|
0369++ 832F 18 F2 jr .cycle
|
|
0370++ 8331 .perform
|
|
0371++ 8331 FE 00 cp StreamType.PT3
|
|
0372++ 8333 20 15 jr nz,.generic
|
|
0373++ 8335 ;merge PT3 streams to TS
|
|
0374++ 8335 E5 D5 push hl,de
|
|
0375++ 8337 E5 D5 push hl,de
|
|
0376++ 8339 2C inc l
|
|
0377++ 833A 5E ld e,(hl)
|
|
0378++ 833B 2C inc l
|
|
0379++ 833C 56 ld d,(hl) ;data1
|
|
0380++ 833D E1 pop hl
|
|
0381++ 833E 2C inc l
|
|
0382++ 833F 7E ld a,(hl)
|
|
0383++ 8340 2C inc l
|
|
0384++ 8341 66 ld h,(hl)
|
|
0385++ 8342 6F ld l,a ;data2
|
|
0386++ 8343 DD E1 pop ix
|
|
0387++ 8345 CD B7 82 call FillTS
|
|
0388++ 8348 D1 E1 pop de,hl
|
|
0389++ 834A .generic
|
|
0390++ 834A ;for other types just take last one
|
|
0391++ 834A 06 0B ld b,StreamData
|
|
0392++ 834C .copyitems
|
|
0393++ 834C 7E ld a,(hl)
|
|
0394++ 834D 12 ld (de),a
|
|
0395++ 834E 2C inc l
|
|
0396++ 834F 1C inc e
|
|
0397++ 8350 10 FA djnz .copyitems
|
|
0398++ 8352 1A ld a,(de)
|
|
0399++ 8353 FE 04 cp StreamType.Unknown
|
|
0400++ 8355 20 F3 jr nz,.generic
|
|
0401++ 8357 18 8D jr MergeStreams
|
|
0402++ 8359
|
|
0403++ 8359 endmod
|
|
0404++ 8359
|
|
0405++ 8359 ifndef NoPrologue
|
|
0406++ 8359~ define NoPrologue
|
|
0407++ 8359 endif
|
|
0408++ 8359
|
|
0409++ 8359 ifndef HaveFormatCheck
|
|
0410++ 8359~ define HaveFormatCheck
|
|
0411++ 8359 endif
|
|
0412++ 8359
|
|
0413++ 8359 ifndef ONtfm
|
|
0414++ 8359 define ONtfm
|
|
0415++ 8359 endif
|
|
0416++ 8359
|
|
0417++ 8359 include "PTSPlay.asm"
|
|
0001+++8359 ifndef _pts_asm_defined
|
|
0002+++8359 define _pts_asm_defined
|
|
0003+++8359
|
|
0004+++8359 MODULE PTS
|
|
0005+++8359
|
|
0006+++8359 ;Universal PT2'n'PT3 Turbo Sound player for ZX Spectrum
|
|
0007+++8359 ;(c)2004-2007 S.V.Bulba <vorobey@mail.khstu.ru>
|
|
0008+++8359 ;Specially for AlCo
|
|
0009+++8359 ;http://bulba.untergrund.net/ (http://bulba.at.kz/)
|
|
0010+++8359
|
|
0011+++8359 ;Release number
|
|
0012+++8359 Release EQU "0"
|
|
0013+++8359
|
|
0014+++8359 ;Conditional assembly
|
|
0015+++8359 ;1) Current position counters at (Vars1+0) and (Vars2+0)
|
|
0016+++8359 CurPosCounter=0
|
|
0017+++8359 ;2) Allow channels allocation bits at (SETUP)
|
|
0018+++8359 ACBBAC=0
|
|
0019+++8359 ;3) Allow loop checking and disabling
|
|
0020+++8359 LoopChecker=0
|
|
0021+++8359 ;4) Insert official identificator
|
|
0022+++8359 Id=0
|
|
0023+++8359 ;5) Set IY for correct return to ZX Basic
|
|
0024+++8359 Basic=0
|
|
0025+++8359
|
|
0026+++8359 ;Features
|
|
0027+++8359 ;--------
|
|
0028+++8359 ;-Can be compiled at any address (i.e. no need rounding ORG
|
|
0029+++8359 ; address).
|
|
0030+++8359 ;-Variables (VARS) can be located at any address (not only after
|
|
0031+++8359 ; code block).
|
|
0032+++8359 ;-INIT subprogram checks PT3-module version and rightly
|
|
0033+++8359 ; generates both note and volume tables outside of code block
|
|
0034+++8359 ; (in VARS).
|
|
0035+++8359 ;-Two portamento (spc. command 3xxx) algorithms (depending of
|
|
0036+++8359 ; PT3 module version).
|
|
0037+++8359 ;-New 1.XX and 2.XX special command behaviour (only for PT v3.7
|
|
0038+++8359 ; and higher).
|
|
0039+++8359 ;-Any Tempo value are accepted (including Tempo=1 and Tempo=2).
|
|
0040+++8359 ;-TS modes: 2xPT3, 2xPT2 and PT v3.7 TS standard.
|
|
0041+++8359 ;-Fully compatible with Ay_Emul PT3 and PT2 players codes.
|
|
0042+++8359 ;-See also notes at the end of this source code.
|
|
0043+++8359
|
|
0044+++8359 ;Limitations
|
|
0045+++8359 ;-----------
|
|
0046+++8359 ;-Can run in RAM only (self-modified code is used).
|
|
0047+++8359 ;-PT2 position list must be end by #FF marker only.
|
|
0048+++8359
|
|
0049+++8359 ;Warning!!! PLAY subprogram can crash if no module are loaded
|
|
0050+++8359 ;into RAM or INIT subprogram was not called before.
|
|
0051+++8359
|
|
0052+++8359 ;Call MUTE or INIT one more time to mute sound after stopping
|
|
0053+++8359 ;playing
|
|
0054+++8359
|
|
0055+++8359 TonA EQU 0
|
|
0056+++8359 TonB EQU 2
|
|
0057+++8359 TonC EQU 4
|
|
0058+++8359 Noise EQU 6
|
|
0059+++8359 Mixer EQU 7
|
|
0060+++8359 AmplA EQU 8
|
|
0061+++8359 AmplB EQU 9
|
|
0062+++8359 AmplC EQU 10
|
|
0063+++8359 Env EQU 11
|
|
0064+++8359 EnvTp EQU 13
|
|
0065+++8359
|
|
0066+++8359 START
|
|
0067+++8359
|
|
0068+++8359 SETUP.NOLOOP EQU 1
|
|
0069+++8359 SETUP.PT2 EQU 2
|
|
0070+++8359 SETUP.ACB EQU 4
|
|
0071+++8359 SETUP.BAC EQU 8
|
|
0072+++8359 SETUP.TS02 EQU 16
|
|
0073+++8359 SETUP.TSPT3 EQU 32
|
|
0074+++8359
|
|
0075+++8359 00 SETUP DB 0 ;set bit0, if you want to play without looping
|
|
0076+++835A ;(optional);
|
|
0077+++835A ;set bit1 for PT2 and reset for PT3 before
|
|
0078+++835A ;calling INIT;
|
|
0079+++835A ;bits2-3: %00-ABC, %01-ACB, %10-BAC (optional);
|
|
0080+++835A ;bits4-5: %00-no TS, %01-2 modules TS, %10-
|
|
0081+++835A ;autodetect PT3 TS-format by AlCo (PT 3.7+);
|
|
0082+++835A ;Remark: old PT3 TS-format by AlCo (PT 3.6) is not
|
|
0083+++835A ;documented and must be converted to new standard.
|
|
0084+++835A ;bit6 is set each time, when loop point of 2nd TS
|
|
0085+++835A ;module is passed (optional).
|
|
0086+++835A ;bit7 is set each time, when loop point of 1st TS
|
|
0087+++835A ;or of single module is passed (optional).
|
|
0088+++835A
|
|
0089+++835A ;Identifier
|
|
0090+++835A IF Id
|
|
0091+++835A~ DB "=UniPT2/PT3/TS-Player r.",Release,"="
|
|
0092+++835A ENDIF
|
|
0093+++835A
|
|
0094+++835A IF LoopChecker
|
|
0095+++835A~ CHECKLP LD HL,SETUP
|
|
0096+++835A~ BIT 0,(IY-100+VRS.ModNum)
|
|
0097+++835A~ JR Z,CHL1
|
|
0098+++835A~ SET 6,(HL)
|
|
0099+++835A~ JR CHL2
|
|
0100+++835A~ CHL1 SET 7,(HL)
|
|
0101+++835A~ CHL2 BIT 0,(HL)
|
|
0102+++835A~ RET Z
|
|
0103+++835A~ POP HL
|
|
0104+++835A~ INC (IY-100+VRS.DelyCnt)
|
|
0105+++835A~ INC (IY-100+VRS.ChanA+CHP.NtSkCn)
|
|
0106+++835A~ XOR A
|
|
0107+++835A~ LD (IY-100+VRS.AYREGS+AmplA),A
|
|
0108+++835A~ LD (IY-100+VRS.AYREGS+AmplB),A
|
|
0109+++835A~ LD (IY-100+VRS.AYREGS+AmplC),A
|
|
0110+++835A~ RET
|
|
0111+++835A ENDIF
|
|
0112+++835A
|
|
0113+++835A AF MUTE XOR A
|
|
0114+++835B 67 LD H,A
|
|
0115+++835C 6F LD L,A
|
|
0116+++835D 32 EE 8C LD (VARS1+VRS.AYREGS+AmplA),A
|
|
0117+++8360 22 EF 8C LD (VARS1+VRS.AYREGS+AmplB),HL
|
|
0118+++8363 32 75 8D LD (VARS2+VRS.AYREGS+AmplA),A
|
|
0119+++8366 22 76 8D LD (VARS2+VRS.AYREGS+AmplB),HL
|
|
0120+++8369 C3 9C 8B JP ROUT
|
|
0121+++836C
|
|
0122+++836C INIT
|
|
0123+++836C ;HL - AddressOfModule
|
|
0124+++836C ;DE - AddresOf2ndModule
|
|
0125+++836C ;A - mode
|
|
0126+++836C D5 PUSH DE
|
|
0127+++836D E5 PUSH HL
|
|
0128+++836E 21 6C 8C LD HL,VARS
|
|
0129+++8371 36 00 LD (HL),0
|
|
0130+++8373 11 6D 8C LD DE,VARS+1
|
|
0131+++8376 01 0E 01 LD BC,VAR0END-VARS-1
|
|
0132+++8379 ED B0 LDIR
|
|
0133+++837B 23 INC HL
|
|
0134+++837C 22 CF 8C LD (VARS1+VRS.AdInPtA),HL ;ptr to zero
|
|
0135+++837F 22 56 8D LD (VARS2+VRS.AdInPtA),HL
|
|
0136+++8382
|
|
0137+++8382 E1 POP HL
|
|
0138+++8383 FD 21 D1 8C LD IY,VARS1+100
|
|
0139+++8387 32 59 83 LD (SETUP),A
|
|
0140+++838A E6 02 AND SETUP.PT2
|
|
0141+++838C C2 15 84 JP NZ,I_PT2
|
|
0142+++838F
|
|
0143+++838F CD 5E 85 CALL INITPT3
|
|
0144+++8392 21 18 1F LD HL,(e_-SamCnv-2)*256+#18
|
|
0145+++8395 22 31 89 LD (SamCnv),HL
|
|
0146+++8398 3E BA LD A,#BA
|
|
0147+++839A 32 FC 88 LD (OrnCP),A
|
|
0148+++839D 32 28 89 LD (SamCP),A
|
|
0149+++83A0 3E 7B LD A,#7B
|
|
0150+++83A2 32 FF 88 LD (OrnLD),A
|
|
0151+++83A5 32 2B 89 LD (SamLD),A
|
|
0152+++83A8 3E 87 LD A,#87
|
|
0153+++83AA 32 22 89 LD (SamClc2),A
|
|
0154+++83AD E1 POP HL
|
|
0155+++83AE ;Use version and ton table of 1st module
|
|
0156+++83AE DD 7E A9 LD A,(IX+13-100) ;EXTRACT VERSION NUMBER
|
|
0157+++83B1 D6 30 SUB #30
|
|
0158+++83B3 38 04 JR C,L20
|
|
0159+++83B5 FE 0A CP 10
|
|
0160+++83B7 38 02 JR C,L21
|
|
0161+++83B9 3E 06 L20 LD A,6
|
|
0162+++83BB 32 CF 87 L21 LD (Version),A
|
|
0163+++83BE F5 PUSH AF ;VolTable version
|
|
0164+++83BF FE 04 CP 4
|
|
0165+++83C1 DD 7E FF LD A,(IX+99-100) ;TONE TABLE NUMBER
|
|
0166+++83C4 17 RLA
|
|
0167+++83C5 E6 07 AND 7
|
|
0168+++83C7 F5 PUSH AF ;NoteTable number
|
|
0169+++83C8
|
|
0170+++83C8 FD 21 58 8D LD IY,VARS2+100
|
|
0171+++83CC 3A 59 83 LD A,(SETUP)
|
|
0172+++83CF E6 30 AND SETUP.TS02|SETUP.TSPT3
|
|
0173+++83D1 28 37 JR Z,NOTS
|
|
0174+++83D3 FE 10 CP SETUP.TS02
|
|
0175+++83D5 28 27 JR Z,TwoPT3s
|
|
0176+++83D7 3A CF 87 LD A,(Version)
|
|
0177+++83DA FE 07 CP 7
|
|
0178+++83DC 38 2C JR C,NOTS
|
|
0179+++83DE DD 7E FE LD A,(IX+98-100) ;ALCO TS MARKER
|
|
0180+++83E1 FE 20 CP #20
|
|
0181+++83E3 28 25 JR Z,NOTS
|
|
0182+++83E5 21 6D 8C LD HL,VARS1
|
|
0183+++83E8 11 F4 8C LD DE,VARS2
|
|
0184+++83EB 01 87 00 LD BC,VRS
|
|
0185+++83EE ED B0 LDIR
|
|
0186+++83F0 FD CB 9E CE SET 1,(IY-100+VRS.ModNum)
|
|
0187+++83F4 4F LD C,A
|
|
0188+++83F5 87 ADD A,A
|
|
0189+++83F6 81 ADD A,C
|
|
0190+++83F7 D6 02 SUB 2
|
|
0191+++83F9 32 93 8A LD (TSSub),A
|
|
0192+++83FC 18 03 JR AlCoTS_
|
|
0193+++83FE CD 5E 85 TwoPT3s CALL INITPT3
|
|
0194+++8401 3E 01 AlCoTS_ LD A,1
|
|
0195+++8403 32 6C 8C LD (is_ts),A
|
|
0196+++8406 FD CB 9E C6 SET 0,(IY-100+VRS.ModNum)
|
|
0197+++840A
|
|
0198+++840A 01 1B 87 NOTS LD BC,PT3PD
|
|
0199+++840D 21 00 00 LD HL,0
|
|
0200+++8410 11 34 8C LD DE,PT3EMPTYORN
|
|
0201+++8413 18 48 JR INITCOMMON
|
|
0202+++8415
|
|
0203+++8415 CD 96 85 I_PT2 CALL INITPT2
|
|
0204+++8418 21 CB 51 LD HL,#51CB
|
|
0205+++841B 22 31 89 LD (SamCnv),HL
|
|
0206+++841E 3E BB LD A,#BB
|
|
0207+++8420 32 FC 88 LD (OrnCP),A
|
|
0208+++8423 32 28 89 LD (SamCP),A
|
|
0209+++8426 3E 7A LD A,#7A
|
|
0210+++8428 32 FF 88 LD (OrnLD),A
|
|
0211+++842B 32 2B 89 LD (SamLD),A
|
|
0212+++842E 3E 80 LD A,#80
|
|
0213+++8430 32 22 89 LD (SamClc2),A
|
|
0214+++8433 E1 POP HL
|
|
0215+++8434 3E 05 LD A,5
|
|
0216+++8436 32 CF 87 LD (Version),A
|
|
0217+++8439 F5 PUSH AF
|
|
0218+++843A 3E 02 LD A,2
|
|
0219+++843C F5 PUSH AF
|
|
0220+++843D
|
|
0221+++843D 3A 59 83 LD A,(SETUP)
|
|
0222+++8440 E6 30 AND SETUP.TS02|SETUP.TSPT3
|
|
0223+++8442 28 10 JR Z,NOTS2
|
|
0224+++8444
|
|
0225+++8444 FD 21 58 8D LD IY,VARS2+100
|
|
0226+++8448 3E 01 LD A,1
|
|
0227+++844A 32 6C 8C LD (is_ts),A
|
|
0228+++844D FD CB 9E C6 SET 0,(IY-100+VRS.ModNum)
|
|
0229+++8451 CD 96 85 CALL INITPT2
|
|
0230+++8454
|
|
0231+++8454 01 55 86 NOTS2 LD BC,PT2PD
|
|
0232+++8457 21 87 86 LD HL,#8687
|
|
0233+++845A 11 8A 8D LD DE,PT2EMPTYORN
|
|
0234+++845D
|
|
0235+++845D INITCOMMON
|
|
0236+++845D
|
|
0237+++845D IF Basic
|
|
0238+++845D~ LD IY,#5C3A
|
|
0239+++845D ENDIF
|
|
0240+++845D
|
|
0241+++845D ED 43 06 86 LD (PTDEC),BC
|
|
0242+++8461 22 95 8A LD (PsCalc),HL
|
|
0243+++8464 D5 PUSH DE
|
|
0244+++8465
|
|
0245+++8465 ;note table data depacker
|
|
0246+++8465 ;(c) Ivan Roshin
|
|
0247+++8465 11 37 8C LD DE,T_PACK
|
|
0248+++8468 01 DC 8D LD BC,T1_+(2*49)-1
|
|
0249+++846B 1A TP_0 LD A,(DE)
|
|
0250+++846C 13 INC DE
|
|
0251+++846D FE 1E CP 15*2
|
|
0252+++846F 30 06 JR NC,TP_1
|
|
0253+++8471 67 LD H,A
|
|
0254+++8472 1A LD A,(DE)
|
|
0255+++8473 6F LD L,A
|
|
0256+++8474 13 INC DE
|
|
0257+++8475 18 07 JR TP_2
|
|
0258+++8477 D5 TP_1 PUSH DE
|
|
0259+++8478 16 00 LD D,0
|
|
0260+++847A 5F LD E,A
|
|
0261+++847B 19 ADD HL,DE
|
|
0262+++847C 19 ADD HL,DE
|
|
0263+++847D D1 POP DE
|
|
0264+++847E 7C TP_2 LD A,H
|
|
0265+++847F 02 LD (BC),A
|
|
0266+++8480 0B DEC BC
|
|
0267+++8481 7D LD A,L
|
|
0268+++8482 02 LD (BC),A
|
|
0269+++8483 0B DEC BC
|
|
0270+++8484 D6 F0 SUB (#F8*2)&255
|
|
0271+++8486 20 E3 JR NZ,TP_0
|
|
0272+++8488
|
|
0273+++8488 3C INC A
|
|
0274+++8489 32 DA 8C LD (VARS1+VRS.DelyCnt),A
|
|
0275+++848C 32 61 8D LD (VARS2+VRS.DelyCnt),A
|
|
0276+++848F 21 01 F0 LD HL,#F001 ;H - CHP.Volume, L - CHP.NtSkCn
|
|
0277+++8492 22 8B 8C LD (VARS1+VRS.ChanA+CHP.NtSkCn),HL
|
|
0278+++8495 22 A8 8C LD (VARS1+VRS.ChanB+CHP.NtSkCn),HL
|
|
0279+++8498 22 C5 8C LD (VARS1+VRS.ChanC+CHP.NtSkCn),HL
|
|
0280+++849B 22 12 8D LD (VARS2+VRS.ChanA+CHP.NtSkCn),HL
|
|
0281+++849E 22 2F 8D LD (VARS2+VRS.ChanB+CHP.NtSkCn),HL
|
|
0282+++84A1 22 4C 8D LD (VARS2+VRS.ChanC+CHP.NtSkCn),HL
|
|
0283+++84A4 E1 POP HL
|
|
0284+++84A5 22 7D 8C LD (VARS1+VRS.ChanA+CHP.OrnPtr),HL
|
|
0285+++84A8 22 9A 8C LD (VARS1+VRS.ChanB+CHP.OrnPtr),HL
|
|
0286+++84AB 22 B7 8C LD (VARS1+VRS.ChanC+CHP.OrnPtr),HL
|
|
0287+++84AE 22 04 8D LD (VARS2+VRS.ChanA+CHP.OrnPtr),HL
|
|
0288+++84B1 22 21 8D LD (VARS2+VRS.ChanB+CHP.OrnPtr),HL
|
|
0289+++84B4 22 3E 8D LD (VARS2+VRS.ChanC+CHP.OrnPtr),HL
|
|
0290+++84B7
|
|
0291+++84B7 F1 POP AF
|
|
0292+++84B8
|
|
0293+++84B8 ;NoteTableCreator (c) Ivan Roshin
|
|
0294+++84B8 ;A - NoteTableNumber*2+VersionForNoteTable
|
|
0295+++84B8 ;(xx1b - 3.xx..3.4r, xx0b - 3.4x..3.6x..VTII1.0)
|
|
0296+++84B8
|
|
0297+++84B8 21 E4 8B LD HL,NT_DATA
|
|
0298+++84BB 16 00 LD D,0
|
|
0299+++84BD 87 ADD A,A
|
|
0300+++84BE 5F LD E,A
|
|
0301+++84BF 19 ADD HL,DE
|
|
0302+++84C0 5E LD E,(HL)
|
|
0303+++84C1 23 INC HL
|
|
0304+++84C2 CB 3B SRL E
|
|
0305+++84C4 9F SBC A,A
|
|
0306+++84C5 E6 A7 AND #A7 ;#00 (NOP) or #A7 (AND A)
|
|
0307+++84C7 32 EF 84 LD (L3),A
|
|
0308+++84CA EB EX DE,HL
|
|
0309+++84CB 01 7B 8D LD BC,T1_
|
|
0310+++84CE 09 ADD HL,BC
|
|
0311+++84CF
|
|
0312+++84CF 1A LD A,(DE)
|
|
0313+++84D0 C6 F4 ADD A,T_&255
|
|
0314+++84D2 4F LD C,A
|
|
0315+++84D3 CE 8B ADC A,T_/256
|
|
0316+++84D5 91 SUB C
|
|
0317+++84D6 47 LD B,A
|
|
0318+++84D7 C5 PUSH BC
|
|
0319+++84D8 11 6B 8E LD DE,NT_
|
|
0320+++84DB D5 PUSH DE
|
|
0321+++84DC
|
|
0322+++84DC 06 0C LD B,12
|
|
0323+++84DE C5 L1 PUSH BC
|
|
0324+++84DF 4E LD C,(HL)
|
|
0325+++84E0 23 INC HL
|
|
0326+++84E1 E5 PUSH HL
|
|
0327+++84E2 46 LD B,(HL)
|
|
0328+++84E3
|
|
0329+++84E3 D5 PUSH DE
|
|
0330+++84E4 EB EX DE,HL
|
|
0331+++84E5 11 17 00 LD DE,23
|
|
0332+++84E8 DD 26 08 LD IXH,8
|
|
0333+++84EB
|
|
0334+++84EB CB 38 L2 SRL B
|
|
0335+++84ED CB 19 RR C
|
|
0336+++84EF 19 L3 DB #19 ;AND A or NOP
|
|
0337+++84F0 79 LD A,C
|
|
0338+++84F1 8A ADC A,D ;=ADC 0
|
|
0339+++84F2 77 LD (HL),A
|
|
0340+++84F3 23 INC HL
|
|
0341+++84F4 78 LD A,B
|
|
0342+++84F5 8A ADC A,D
|
|
0343+++84F6 77 LD (HL),A
|
|
0344+++84F7 19 ADD HL,DE
|
|
0345+++84F8 DD 25 DEC IXH
|
|
0346+++84FA 20 EF JR NZ,L2
|
|
0347+++84FC
|
|
0348+++84FC D1 POP DE
|
|
0349+++84FD 13 INC DE
|
|
0350+++84FE 13 INC DE
|
|
0351+++84FF E1 POP HL
|
|
0352+++8500 23 INC HL
|
|
0353+++8501 C1 POP BC
|
|
0354+++8502 10 DA DJNZ L1
|
|
0355+++8504
|
|
0356+++8504 E1 POP HL
|
|
0357+++8505 D1 POP DE
|
|
0358+++8506
|
|
0359+++8506 7B LD A,E
|
|
0360+++8507 FE 00 CP TCOLD_1&255
|
|
0361+++8509 20 05 JR NZ,CORR_1
|
|
0362+++850B 3E FD LD A,#FD
|
|
0363+++850D 32 99 8E LD (NT_+#2E),A
|
|
0364+++8510
|
|
0365+++8510 1A CORR_1 LD A,(DE)
|
|
0366+++8511 A7 AND A
|
|
0367+++8512 28 11 JR Z,TC_EXIT
|
|
0368+++8514 1F RRA
|
|
0369+++8515 F5 PUSH AF
|
|
0370+++8516 87 ADD A,A
|
|
0371+++8517 4F LD C,A
|
|
0372+++8518 09 ADD HL,BC
|
|
0373+++8519 F1 POP AF
|
|
0374+++851A 30 02 JR NC,CORR_2
|
|
0375+++851C 35 DEC (HL)
|
|
0376+++851D 35 DEC (HL)
|
|
0377+++851E 34 CORR_2 INC (HL)
|
|
0378+++851F A7 AND A
|
|
0379+++8520 ED 42 SBC HL,BC
|
|
0380+++8522 13 INC DE
|
|
0381+++8523 18 EB JR CORR_1
|
|
0382+++8525
|
|
0383+++8525 TC_EXIT
|
|
0384+++8525
|
|
0385+++8525 F1 POP AF
|
|
0386+++8526
|
|
0387+++8526 ;VolTableCreator (c) Ivan Roshin
|
|
0388+++8526 ;A - VersionForVolumeTable (0..4 - 3.xx..3.4x;
|
|
0389+++8526 ;5.. - 2.x,3.5x..3.6x..VTII1.0)
|
|
0390+++8526
|
|
0391+++8526 FE 05 CP 5
|
|
0392+++8528 21 11 00 LD HL,#11
|
|
0393+++852B 54 LD D,H
|
|
0394+++852C 5C LD E,H
|
|
0395+++852D 3E 17 LD A,#17
|
|
0396+++852F 30 03 JR NC,M1
|
|
0397+++8531 2D DEC L
|
|
0398+++8532 5D LD E,L
|
|
0399+++8533 AF XOR A
|
|
0400+++8534 32 45 85 M1 LD (M2),A
|
|
0401+++8537
|
|
0402+++8537 DD 21 7B 8D LD IX,VT_+16
|
|
0403+++853B
|
|
0404+++853B 0E 0F LD C,#F
|
|
0405+++853D E5 INITV2 PUSH HL
|
|
0406+++853E
|
|
0407+++853E 19 ADD HL,DE
|
|
0408+++853F EB EX DE,HL
|
|
0409+++8540 ED 62 SBC HL,HL
|
|
0410+++8542
|
|
0411+++8542 06 10 LD B,#10
|
|
0412+++8544 7D INITV1 LD A,L
|
|
0413+++8545 7D M2 DB #7D
|
|
0414+++8546 7C LD A,H
|
|
0415+++8547 CE 00 ADC A,0
|
|
0416+++8549 DD 77 00 LD (IX),A
|
|
0417+++854C DD 23 INC IX
|
|
0418+++854E 19 ADD HL,DE
|
|
0419+++854F 10 F3 DJNZ INITV1
|
|
0420+++8551
|
|
0421+++8551 E1 POP HL
|
|
0422+++8552 7B LD A,E
|
|
0423+++8553 FE 77 CP #77
|
|
0424+++8555 20 01 JR NZ,M3
|
|
0425+++8557 1C INC E
|
|
0426+++8558 0D M3 DEC C
|
|
0427+++8559 20 E2 JR NZ,INITV2
|
|
0428+++855B
|
|
0429+++855B C3 9C 8B JP ROUT
|
|
0430+++855E
|
|
0431+++855E CD D1 85 INITPT3 CALL SETMDAD
|
|
0432+++8561 E5 PUSH HL
|
|
0433+++8562 11 64 00 LD DE,100
|
|
0434+++8565 19 ADD HL,DE
|
|
0435+++8566 7E LD A,(HL)
|
|
0436+++8567 FD 77 08 LD (IY-100+VRS.Delay),A
|
|
0437+++856A E5 PUSH HL
|
|
0438+++856B DD E1 POP IX
|
|
0439+++856D 19 ADD HL,DE
|
|
0440+++856E CD DF 85 CALL SETCPPT
|
|
0441+++8571 DD 5E 02 LD E,(IX+102-100)
|
|
0442+++8574 23 INC HL
|
|
0443+++8575
|
|
0444+++8575 IF CurPosCounter
|
|
0445+++8575~ LD (IY-100+VRS.PosSub),L
|
|
0446+++8575 ENDIF
|
|
0447+++8575
|
|
0448+++8575 19 ADD HL,DE
|
|
0449+++8576 CD E6 85 CALL SETLPPT
|
|
0450+++8579 D1 POP DE
|
|
0451+++857A DD 6E 03 LD L,(IX+103-100)
|
|
0452+++857D DD 66 04 LD H,(IX+104-100)
|
|
0453+++8580 19 ADD HL,DE
|
|
0454+++8581 CD CA 85 CALL SETPTPT
|
|
0455+++8584 21 A9 00 LD HL,169
|
|
0456+++8587 19 ADD HL,DE
|
|
0457+++8588 CD D8 85 CALL SETORPT
|
|
0458+++858B 21 69 00 LD HL,105
|
|
0459+++858E 19 ADD HL,DE
|
|
0460+++858F
|
|
0461+++858F FD 75 FA SETSMPT LD (IY-100+VRS.SamPtrs),L
|
|
0462+++8592 FD 74 FB LD (IY-100+VRS.SamPtrs+1),H
|
|
0463+++8595 C9 RET
|
|
0464+++8596
|
|
0465+++8596 7E INITPT2 LD A,(HL)
|
|
0466+++8597 FD 77 08 LD (IY-100+VRS.Delay),A
|
|
0467+++859A E5 PUSH HL
|
|
0468+++859B E5 PUSH HL
|
|
0469+++859C E5 PUSH HL
|
|
0470+++859D 23 INC HL
|
|
0471+++859E 23 INC HL
|
|
0472+++859F 7E LD A,(HL)
|
|
0473+++85A0 23 INC HL
|
|
0474+++85A1 CD 8F 85 CALL SETSMPT
|
|
0475+++85A4 5E LD E,(HL)
|
|
0476+++85A5 23 INC HL
|
|
0477+++85A6 56 LD D,(HL)
|
|
0478+++85A7 E1 POP HL
|
|
0479+++85A8 A7 AND A
|
|
0480+++85A9 ED 52 SBC HL,DE
|
|
0481+++85AB CD D1 85 CALL SETMDAD
|
|
0482+++85AE E1 POP HL
|
|
0483+++85AF 11 43 00 LD DE,67
|
|
0484+++85B2 19 ADD HL,DE
|
|
0485+++85B3 CD D8 85 CALL SETORPT
|
|
0486+++85B6 1E 20 LD E,32
|
|
0487+++85B8 19 ADD HL,DE
|
|
0488+++85B9 4E LD C,(HL)
|
|
0489+++85BA 23 INC HL
|
|
0490+++85BB 46 LD B,(HL)
|
|
0491+++85BC 1E 1E LD E,30
|
|
0492+++85BE 19 ADD HL,DE
|
|
0493+++85BF CD DF 85 CALL SETCPPT
|
|
0494+++85C2 5F LD E,A
|
|
0495+++85C3 23 INC HL
|
|
0496+++85C4
|
|
0497+++85C4 IF CurPosCounter
|
|
0498+++85C4~ LD (IY-100+VRS.PosSub),L
|
|
0499+++85C4 ENDIF
|
|
0500+++85C4
|
|
0501+++85C4 19 ADD HL,DE
|
|
0502+++85C5 CD E6 85 CALL SETLPPT
|
|
0503+++85C8 E1 POP HL
|
|
0504+++85C9 09 ADD HL,BC
|
|
0505+++85CA
|
|
0506+++85CA FD 75 FC SETPTPT LD (IY-100+VRS.PatsPtr),L
|
|
0507+++85CD FD 74 FD LD (IY-100+VRS.PatsPtr+1),H
|
|
0508+++85D0 C9 RET
|
|
0509+++85D1
|
|
0510+++85D1 FD 75 F6 SETMDAD LD (IY-100+VRS.MODADDR),L
|
|
0511+++85D4 FD 74 F7 LD (IY-100+VRS.MODADDR+1),H
|
|
0512+++85D7 C9 RET
|
|
0513+++85D8
|
|
0514+++85D8 FD 75 F8 SETORPT LD (IY-100+VRS.OrnPtrs),L
|
|
0515+++85DB FD 74 F9 LD (IY-100+VRS.OrnPtrs+1),H
|
|
0516+++85DE C9 RET
|
|
0517+++85DF
|
|
0518+++85DF FD 75 04 SETCPPT LD (IY-100+VRS.CrPsPtr),L
|
|
0519+++85E2 FD 74 05 LD (IY-100+VRS.CrPsPtr+1),H
|
|
0520+++85E5 C9 RET
|
|
0521+++85E6
|
|
0522+++85E6 FD 75 06 SETLPPT LD (IY-100+VRS.LPosPtr),L
|
|
0523+++85E9 FD 74 07 LD (IY-100+VRS.LPosPtr+1),H
|
|
0524+++85EC C9 RET
|
|
0525+++85ED
|
|
0526+++85ED FD 75 13 SETENBS LD (IY-100+VRS.EnvBase),L
|
|
0527+++85F0 FD 74 14 LD (IY-100+VRS.EnvBase+1),H
|
|
0528+++85F3 C9 RET
|
|
0529+++85F4
|
|
0530+++85F4 FD 75 0C SETESLD LD (IY-100+VRS.CurESld),L
|
|
0531+++85F7 FD 74 0D LD (IY-100+VRS.CurESld+1),H
|
|
0532+++85FA C9 RET
|
|
0533+++85FB
|
|
0534+++85FB FD E5 GETIX PUSH IY
|
|
0535+++85FD DD E1 POP IX
|
|
0536+++85FF DD 19 ADD IX,DE
|
|
0537+++8601 C9 RET
|
|
0538+++8602
|
|
0539+++8602 CD FB 85 PTDECOD CALL GETIX
|
|
0540+++8605 PTDEC EQU $+1
|
|
0541+++8605 C3 C3 C3 JP #C3C3
|
|
0542+++8608
|
|
0543+++8608 ;PT2 pattern decoder
|
|
0544+++8608 CD 9E 88 PD2_SAM CALL SETSAM
|
|
0545+++860B 18 4A JR PD2_LOOP
|
|
0546+++860D
|
|
0547+++860D DD 77 08 PD2_EOff LD (IX-12+CHP.Env_En),A
|
|
0548+++8610 18 45 JR PD2_LOOP
|
|
0549+++8612
|
|
0550+++8612 DD 36 08 10 PD2_ENV LD (IX-12+CHP.Env_En),16
|
|
0551+++8616 FD 77 22 LD (IY-100+VRS.AYREGS+EnvTp),A
|
|
0552+++8619 0A LD A,(BC)
|
|
0553+++861A 03 INC BC
|
|
0554+++861B 6F LD L,A
|
|
0555+++861C 0A LD A,(BC)
|
|
0556+++861D 03 INC BC
|
|
0557+++861E 67 LD H,A
|
|
0558+++861F CD ED 85 CALL SETENBS
|
|
0559+++8622 18 33 JR PD2_LOOP
|
|
0560+++8624
|
|
0561+++8624 CD 7F 88 PD2_ORN CALL SETORN
|
|
0562+++8627 18 2E JR PD2_LOOP
|
|
0563+++8629
|
|
0564+++8629 3C PD2_SKIP INC A
|
|
0565+++862A DD 77 05 LD (IX-12+CHP.NNtSkp),A
|
|
0566+++862D 18 28 JR PD2_LOOP
|
|
0567+++862F
|
|
0568+++862F 0F PD2_VOL RRCA
|
|
0569+++8630 0F RRCA
|
|
0570+++8631 0F RRCA
|
|
0571+++8632 0F RRCA
|
|
0572+++8633 DD 77 10 LD (IX-12+CHP.Volume),A
|
|
0573+++8636 18 1F JR PD2_LOOP
|
|
0574+++8638
|
|
0575+++8638 CD 4F 88 PD2_DEL CALL C_DELAY
|
|
0576+++863B 18 1A JR PD2_LOOP
|
|
0577+++863D
|
|
0578+++863D DD CB 09 D6 PD2_GLIS SET 2,(IX-12+CHP.Flags)
|
|
0579+++8641 3C INC A
|
|
0580+++8642 DD 77 0A LD (IX-12+CHP.TnSlDl),A
|
|
0581+++8645 DD 77 F9 LD (IX-12+CHP.TSlCnt),A
|
|
0582+++8648 0A LD A,(BC)
|
|
0583+++8649 03 INC BC
|
|
0584+++864A DD 77 0B LD (IX-12+CHP.TSlStp),A
|
|
0585+++864D 87 ADD A,A
|
|
0586+++864E 9F SBC A,A
|
|
0587+++864F DD 77 0C LD (IX-12+CHP.TSlStp+1),A
|
|
0588+++8652 37 SCF
|
|
0589+++8653 18 01 JR PD2_LP2
|
|
0590+++8655
|
|
0591+++8655 A7 PT2PD AND A
|
|
0592+++8656
|
|
0593+++8656 08 PD2_LP2 EX AF,AF'
|
|
0594+++8657
|
|
0595+++8657 0A PD2_LOOP LD A,(BC)
|
|
0596+++8658 03 INC BC
|
|
0597+++8659 C6 20 ADD A,#20
|
|
0598+++865B 28 3F JR Z,PD2_REL
|
|
0599+++865D 38 A9 JR C,PD2_SAM
|
|
0600+++865F C6 60 ADD A,96
|
|
0601+++8661 38 3E JR C,PD2_NOTE
|
|
0602+++8663 3C INC A
|
|
0603+++8664 28 A7 JR Z,PD2_EOff
|
|
0604+++8666 C6 0F ADD A,15
|
|
0605+++8668 CA 7E 87 JP Z,PD_FIN
|
|
0606+++866B 38 A5 JR C,PD2_ENV
|
|
0607+++866D C6 10 ADD A,#10
|
|
0608+++866F 38 B3 JR C,PD2_ORN
|
|
0609+++8671 C6 40 ADD A,#40
|
|
0610+++8673 38 B4 JR C,PD2_SKIP
|
|
0611+++8675 C6 10 ADD A,#10
|
|
0612+++8677 38 B6 JR C,PD2_VOL
|
|
0613+++8679 3C INC A
|
|
0614+++867A 28 BC JR Z,PD2_DEL
|
|
0615+++867C 3C INC A
|
|
0616+++867D 28 BE JR Z,PD2_GLIS
|
|
0617+++867F 3C INC A
|
|
0618+++8680 28 0A JR Z,PD2_PORT
|
|
0619+++8682 3C INC A
|
|
0620+++8683 28 12 JR Z,PD2_STOP
|
|
0621+++8685 0A LD A,(BC)
|
|
0622+++8686 03 INC BC
|
|
0623+++8687 DD 77 F7 LD (IX-12+CHP.CrNsSl),A
|
|
0624+++868A 18 CB JR PD2_LOOP
|
|
0625+++868C
|
|
0626+++868C DD CB 09 96 PD2_PORT RES 2,(IX-12+CHP.Flags)
|
|
0627+++8690 0A LD A,(BC)
|
|
0628+++8691 03 INC BC
|
|
0629+++8692 03 INC BC ;ignoring precalc delta to right sound
|
|
0630+++8693 03 INC BC
|
|
0631+++8694 37 SCF
|
|
0632+++8695 18 BF JR PD2_LP2
|
|
0633+++8697
|
|
0634+++8697 DD 77 F9 PD2_STOP LD (IX-12+CHP.TSlCnt),A
|
|
0635+++869A 18 BB JR PD2_LOOP
|
|
0636+++869C
|
|
0637+++869C DD 77 09 PD2_REL LD (IX-12+CHP.Flags),A
|
|
0638+++869F 18 2C JR PD2_EXIT
|
|
0639+++86A1
|
|
0640+++86A1 6F PD2_NOTE LD L,A
|
|
0641+++86A2 DD 7E 06 LD A,(IX-12+CHP.Note)
|
|
0642+++86A5 32 B8 87 LD (PrNote+1),A
|
|
0643+++86A8 DD 75 06 LD (IX-12+CHP.Note),L
|
|
0644+++86AB AF XOR A
|
|
0645+++86AC DD 77 F9 LD (IX-12+CHP.TSlCnt),A
|
|
0646+++86AF DD CB 09 C6 SET 0,(IX-12+CHP.Flags)
|
|
0647+++86B3 08 EX AF,AF'
|
|
0648+++86B4 30 16 JR NC,NOGLIS2
|
|
0649+++86B6 DD CB 09 56 BIT 2,(IX-12+CHP.Flags)
|
|
0650+++86BA 20 0C JR NZ,NOPORT2
|
|
0651+++86BC 32 DE 87 LD (LoStep),A
|
|
0652+++86BF 87 ADD A,A
|
|
0653+++86C0 9F SBC A,A
|
|
0654+++86C1 08 EX AF,AF'
|
|
0655+++86C2 67 LD H,A
|
|
0656+++86C3 6F LD L,A
|
|
0657+++86C4 3C INC A
|
|
0658+++86C5 CD 99 87 CALL SETPORT
|
|
0659+++86C8 DD 36 F9 01 NOPORT2 LD (IX-12+CHP.TSlCnt),1
|
|
0660+++86CC AF NOGLIS2 XOR A
|
|
0661+++86CD
|
|
0662+++86CD
|
|
0663+++86CD DD 77 F5 PD2_EXIT LD (IX-12+CHP.PsInSm),A
|
|
0664+++86D0 DD 77 F4 LD (IX-12+CHP.PsInOr),A
|
|
0665+++86D3 DD 77 FA LD (IX-12+CHP.CrTnSl),A
|
|
0666+++86D6 DD 77 FB LD (IX-12+CHP.CrTnSl+1),A
|
|
0667+++86D9 C3 7E 87 JP PD_FIN
|
|
0668+++86DC
|
|
0669+++86DC ;PT3 pattern decoder
|
|
0670+++86DC DD 36 08 00 PD_OrSm LD (IX-12+CHP.Env_En),0
|
|
0671+++86E0 CD 7F 88 CALL SETORN
|
|
0672+++86E3 0A PD_SAM_ LD A,(BC)
|
|
0673+++86E4 03 INC BC
|
|
0674+++86E5 0F RRCA
|
|
0675+++86E6
|
|
0676+++86E6 CD 9E 88 PD_SAM CALL SETSAM
|
|
0677+++86E9 18 3F JR PD_LOOP
|
|
0678+++86EB
|
|
0679+++86EB 0F PD_VOL RRCA
|
|
0680+++86EC 0F RRCA
|
|
0681+++86ED 0F RRCA
|
|
0682+++86EE 0F RRCA
|
|
0683+++86EF DD 77 10 LD (IX-12+CHP.Volume),A
|
|
0684+++86F2 18 39 JR PD_LP2
|
|
0685+++86F4
|
|
0686+++86F4 DD 77 08 PD_EOff LD (IX-12+CHP.Env_En),A
|
|
0687+++86F7 DD 77 F4 LD (IX-12+CHP.PsInOr),A
|
|
0688+++86FA 18 31 JR PD_LP2
|
|
0689+++86FC
|
|
0690+++86FC 3D PD_SorE DEC A
|
|
0691+++86FD 20 07 JR NZ,PD_ENV
|
|
0692+++86FF 0A LD A,(BC)
|
|
0693+++8700 03 INC BC
|
|
0694+++8701 DD 77 05 LD (IX-12+CHP.NNtSkp),A
|
|
0695+++8704 18 27 JR PD_LP2
|
|
0696+++8706
|
|
0697+++8706 CD 64 88 PD_ENV CALL SETENV
|
|
0698+++8709 18 22 JR PD_LP2
|
|
0699+++870B
|
|
0700+++870B CD 7F 88 PD_ORN CALL SETORN
|
|
0701+++870E 18 1A JR PD_LOOP
|
|
0702+++8710
|
|
0703+++8710 DD 77 08 PD_ESAM LD (IX-12+CHP.Env_En),A
|
|
0704+++8713 DD 77 F4 LD (IX-12+CHP.PsInOr),A
|
|
0705+++8716 C4 64 88 CALL NZ,SETENV
|
|
0706+++8719 18 C8 JR PD_SAM_
|
|
0707+++871B
|
|
0708+++871B DD 7E 06 PT3PD LD A,(IX-12+CHP.Note)
|
|
0709+++871E 32 B8 87 LD (PrNote+1),A
|
|
0710+++8721 DD 6E FA LD L,(IX-12+CHP.CrTnSl)
|
|
0711+++8724 DD 66 FB LD H,(IX-12+CHP.CrTnSl+1)
|
|
0712+++8727 22 D5 87 LD (PrSlide+1),HL
|
|
0713+++872A
|
|
0714+++872A 11 10 20 PD_LOOP LD DE,#2010
|
|
0715+++872D 0A PD_LP2 LD A,(BC)
|
|
0716+++872E 03 INC BC
|
|
0717+++872F 83 ADD A,E
|
|
0718+++8730 38 AA JR C,PD_OrSm
|
|
0719+++8732 82 ADD A,D
|
|
0720+++8733 28 49 JR Z,PD_FIN
|
|
0721+++8735 38 AF JR C,PD_SAM
|
|
0722+++8737 83 ADD A,E
|
|
0723+++8738 28 25 JR Z,PD_REL
|
|
0724+++873A 38 AF JR C,PD_VOL
|
|
0725+++873C 83 ADD A,E
|
|
0726+++873D 28 B5 JR Z,PD_EOff
|
|
0727+++873F 38 BB JR C,PD_SorE
|
|
0728+++8741 C6 60 ADD A,96
|
|
0729+++8743 38 20 JR C,PD_NOTE
|
|
0730+++8745 83 ADD A,E
|
|
0731+++8746 38 C3 JR C,PD_ORN
|
|
0732+++8748 82 ADD A,D
|
|
0733+++8749 38 0F JR C,PD_NOIS
|
|
0734+++874B 83 ADD A,E
|
|
0735+++874C 38 C2 JR C,PD_ESAM
|
|
0736+++874E 87 ADD A,A
|
|
0737+++874F 5F LD E,A
|
|
0738+++8750 21 DA 67 LD HL,(SPCCOMS+#FF20-#2000)&65535
|
|
0739+++8753 19 ADD HL,DE
|
|
0740+++8754 5E LD E,(HL)
|
|
0741+++8755 23 INC HL
|
|
0742+++8756 56 LD D,(HL)
|
|
0743+++8757 D5 PUSH DE
|
|
0744+++8758 18 D0 JR PD_LOOP
|
|
0745+++875A
|
|
0746+++875A FD 77 10 PD_NOIS LD (IY-100+VRS.Ns_Base),A
|
|
0747+++875D 18 CE JR PD_LP2
|
|
0748+++875F
|
|
0749+++875F DD CB 09 86 PD_REL RES 0,(IX-12+CHP.Flags)
|
|
0750+++8763 18 08 JR PD_RES
|
|
0751+++8765
|
|
0752+++8765 DD 77 06 PD_NOTE LD (IX-12+CHP.Note),A
|
|
0753+++8768 DD CB 09 C6 SET 0,(IX-12+CHP.Flags)
|
|
0754+++876C AF XOR A
|
|
0755+++876D
|
|
0756+++876D ED 73 7C 87 PD_RES LD (PDSP_+1),SP
|
|
0757+++8771 DD F9 LD SP,IX
|
|
0758+++8773 67 LD H,A
|
|
0759+++8774 6F LD L,A
|
|
0760+++8775 E5 PUSH HL
|
|
0761+++8776 E5 PUSH HL
|
|
0762+++8777 E5 PUSH HL
|
|
0763+++8778 E5 PUSH HL
|
|
0764+++8779 E5 PUSH HL
|
|
0765+++877A E5 PUSH HL
|
|
0766+++877B 31 31 31 PDSP_ LD SP,#3131
|
|
0767+++877E
|
|
0768+++877E DD 7E 05 PD_FIN LD A,(IX-12+CHP.NNtSkp)
|
|
0769+++8781 DD 77 0F LD (IX-12+CHP.NtSkCn),A
|
|
0770+++8784 C9 RET
|
|
0771+++8785
|
|
0772+++8785 0A C_PORTM LD A,(BC)
|
|
0773+++8786 03 INC BC
|
|
0774+++8787 ;SKIP PRECALCULATED TONE DELTA (BECAUSE
|
|
0775+++8787 ;CANNOT BE RIGHT AFTER PT3 COMPILATION)
|
|
0776+++8787 03 INC BC
|
|
0777+++8788 03 INC BC
|
|
0778+++8789 08 EX AF,AF'
|
|
0779+++878A 0A LD A,(BC) ;SIGNED TONE STEP
|
|
0780+++878B 03 INC BC
|
|
0781+++878C 32 DE 87 LD (LoStep),A
|
|
0782+++878F 0A LD A,(BC)
|
|
0783+++8790 03 INC BC
|
|
0784+++8791 A7 AND A
|
|
0785+++8792 08 EX AF,AF'
|
|
0786+++8793 DD 6E FA LD L,(IX-12+CHP.CrTnSl)
|
|
0787+++8796 DD 66 FB LD H,(IX-12+CHP.CrTnSl+1)
|
|
0788+++8799
|
|
0789+++8799 ;Set portamento variables
|
|
0790+++8799 ;A - Delay; A' - Hi(Step); ZF' - (A'=0); HL - CrTnSl
|
|
0791+++8799
|
|
0792+++8799 DD CB 09 96 SETPORT RES 2,(IX-12+CHP.Flags)
|
|
0793+++879D DD 77 0A LD (IX-12+CHP.TnSlDl),A
|
|
0794+++87A0 DD 77 F9 LD (IX-12+CHP.TSlCnt),A
|
|
0795+++87A3 E5 PUSH HL
|
|
0796+++87A4 11 6B 8E LD DE,NT_
|
|
0797+++87A7 DD 7E 06 LD A,(IX-12+CHP.Note)
|
|
0798+++87AA DD 77 07 LD (IX-12+CHP.SlToNt),A
|
|
0799+++87AD 87 ADD A,A
|
|
0800+++87AE 6F LD L,A
|
|
0801+++87AF 26 00 LD H,0
|
|
0802+++87B1 19 ADD HL,DE
|
|
0803+++87B2 7E LD A,(HL)
|
|
0804+++87B3 23 INC HL
|
|
0805+++87B4 66 LD H,(HL)
|
|
0806+++87B5 6F LD L,A
|
|
0807+++87B6 E5 PUSH HL
|
|
0808+++87B7 3E 3E PrNote LD A,#3E
|
|
0809+++87B9 DD 77 06 LD (IX-12+CHP.Note),A
|
|
0810+++87BC 87 ADD A,A
|
|
0811+++87BD 6F LD L,A
|
|
0812+++87BE 26 00 LD H,0
|
|
0813+++87C0 19 ADD HL,DE
|
|
0814+++87C1 5E LD E,(HL)
|
|
0815+++87C2 23 INC HL
|
|
0816+++87C3 56 LD D,(HL)
|
|
0817+++87C4 E1 POP HL
|
|
0818+++87C5 ED 52 SBC HL,DE
|
|
0819+++87C7 DD 75 0D LD (IX-12+CHP.TnDelt),L
|
|
0820+++87CA DD 74 0E LD (IX-12+CHP.TnDelt+1),H
|
|
0821+++87CD D1 POP DE
|
|
0822+++87CE Version EQU $+1
|
|
0823+++87CE 3E 3E LD A,#3E
|
|
0824+++87D0 FE 06 CP 6
|
|
0825+++87D2 38 09 JR C,OLDPRTM ;Old 3xxx for PT v3.5-
|
|
0826+++87D4 11 11 11 PrSlide LD DE,#1111
|
|
0827+++87D7 DD 73 FA LD (IX-12+CHP.CrTnSl),E
|
|
0828+++87DA DD 72 FB LD (IX-12+CHP.CrTnSl+1),D
|
|
0829+++87DD LoStep EQU $+1
|
|
0830+++87DD 3E 3E OLDPRTM LD A,#3E
|
|
0831+++87DF 08 EX AF,AF'
|
|
0832+++87E0 28 01 JR Z,NOSIG
|
|
0833+++87E2 EB EX DE,HL
|
|
0834+++87E3 ED 52 NOSIG SBC HL,DE
|
|
0835+++87E5 F2 ED 87 JP P,SET_STP
|
|
0836+++87E8 2F CPL
|
|
0837+++87E9 08 EX AF,AF'
|
|
0838+++87EA ED 44 NEG
|
|
0839+++87EC 08 EX AF,AF'
|
|
0840+++87ED DD 77 0C SET_STP LD (IX-12+CHP.TSlStp+1),A
|
|
0841+++87F0 08 EX AF,AF'
|
|
0842+++87F1 DD 77 0B LD (IX-12+CHP.TSlStp),A
|
|
0843+++87F4 DD 36 FE 00 LD (IX-12+CHP.COnOff),0
|
|
0844+++87F8 C9 RET
|
|
0845+++87F9
|
|
0846+++87F9 DD CB 09 D6 C_GLISS SET 2,(IX-12+CHP.Flags)
|
|
0847+++87FD 0A LD A,(BC)
|
|
0848+++87FE 03 INC BC
|
|
0849+++87FF DD 77 0A LD (IX-12+CHP.TnSlDl),A
|
|
0850+++8802 A7 AND A
|
|
0851+++8803 20 07 JR NZ,GL36
|
|
0852+++8805 3A CF 87 LD A,(Version) ;AlCo PT3.7+
|
|
0853+++8808 FE 07 CP 7
|
|
0854+++880A 9F SBC A,A
|
|
0855+++880B 3C INC A
|
|
0856+++880C DD 77 F9 GL36 LD (IX-12+CHP.TSlCnt),A
|
|
0857+++880F 0A LD A,(BC)
|
|
0858+++8810 03 INC BC
|
|
0859+++8811 08 EX AF,AF'
|
|
0860+++8812 0A LD A,(BC)
|
|
0861+++8813 03 INC BC
|
|
0862+++8814 18 D7 JR SET_STP
|
|
0863+++8816
|
|
0864+++8816 0A C_SMPOS LD A,(BC)
|
|
0865+++8817 03 INC BC
|
|
0866+++8818 DD 77 F5 LD (IX-12+CHP.PsInSm),A
|
|
0867+++881B C9 RET
|
|
0868+++881C
|
|
0869+++881C 0A C_ORPOS LD A,(BC)
|
|
0870+++881D 03 INC BC
|
|
0871+++881E DD 77 F4 LD (IX-12+CHP.PsInOr),A
|
|
0872+++8821 C9 RET
|
|
0873+++8822
|
|
0874+++8822 0A C_VIBRT LD A,(BC)
|
|
0875+++8823 03 INC BC
|
|
0876+++8824 DD 77 FF LD (IX-12+CHP.OnOffD),A
|
|
0877+++8827 DD 77 FE LD (IX-12+CHP.COnOff),A
|
|
0878+++882A 0A LD A,(BC)
|
|
0879+++882B 03 INC BC
|
|
0880+++882C DD 77 00 LD (IX-12+CHP.OffOnD),A
|
|
0881+++882F AF XOR A
|
|
0882+++8830 DD 77 F9 LD (IX-12+CHP.TSlCnt),A
|
|
0883+++8833 DD 77 FA LD (IX-12+CHP.CrTnSl),A
|
|
0884+++8836 DD 77 FB LD (IX-12+CHP.CrTnSl+1),A
|
|
0885+++8839 C9 RET
|
|
0886+++883A
|
|
0887+++883A 0A C_ENGLS LD A,(BC)
|
|
0888+++883B 03 INC BC
|
|
0889+++883C FD 77 0E LD (IY-100+VRS.Env_Del),A
|
|
0890+++883F FD 77 0F LD (IY-100+VRS.CurEDel),A
|
|
0891+++8842 0A LD A,(BC)
|
|
0892+++8843 03 INC BC
|
|
0893+++8844 6F LD L,A
|
|
0894+++8845 0A LD A,(BC)
|
|
0895+++8846 03 INC BC
|
|
0896+++8847 67 LD H,A
|
|
0897+++8848 FD 75 0A LD (IY-100+VRS.ESldAdd),L
|
|
0898+++884B FD 74 0B LD (IY-100+VRS.ESldAdd+1),H
|
|
0899+++884E C9 RET
|
|
0900+++884F
|
|
0901+++884F 0A C_DELAY LD A,(BC)
|
|
0902+++8850 03 INC BC
|
|
0903+++8851 FD 77 08 LD (IY-100+VRS.Delay),A
|
|
0904+++8854 21 F6 8C LD HL,VARS2+VRS.ModNum ;if AlCo_TS
|
|
0905+++8857 CB 4E BIT 1,(HL)
|
|
0906+++8859 C8 RET Z
|
|
0907+++885A 32 D9 8C LD (VARS1+VRS.Delay),A
|
|
0908+++885D 32 DA 8C LD (VARS1+VRS.DelyCnt),A
|
|
0909+++8860 32 60 8D LD (VARS2+VRS.Delay),A
|
|
0910+++8863 C9 RET
|
|
0911+++8864
|
|
0912+++8864 DD 73 08 SETENV LD (IX-12+CHP.Env_En),E
|
|
0913+++8867 FD 77 22 LD (IY-100+VRS.AYREGS+EnvTp),A
|
|
0914+++886A 0A LD A,(BC)
|
|
0915+++886B 03 INC BC
|
|
0916+++886C 67 LD H,A
|
|
0917+++886D 0A LD A,(BC)
|
|
0918+++886E 03 INC BC
|
|
0919+++886F 6F LD L,A
|
|
0920+++8870 CD ED 85 CALL SETENBS
|
|
0921+++8873 AF XOR A
|
|
0922+++8874 DD 77 F4 LD (IX-12+CHP.PsInOr),A
|
|
0923+++8877 FD 77 0F LD (IY-100+VRS.CurEDel),A
|
|
0924+++887A 67 LD H,A
|
|
0925+++887B 6F LD L,A
|
|
0926+++887C C3 F4 85 JP SETESLD
|
|
0927+++887F
|
|
0928+++887F 87 SETORN ADD A,A
|
|
0929+++8880 5F LD E,A
|
|
0930+++8881 16 00 LD D,0
|
|
0931+++8883 DD 72 F4 LD (IX-12+CHP.PsInOr),D
|
|
0932+++8886 FD 6E F8 LD L,(IY-100+VRS.OrnPtrs)
|
|
0933+++8889 FD 66 F9 LD H,(IY-100+VRS.OrnPtrs+1)
|
|
0934+++888C 19 ADD HL,DE
|
|
0935+++888D 5E LD E,(HL)
|
|
0936+++888E 23 INC HL
|
|
0937+++888F 56 LD D,(HL)
|
|
0938+++8890 FD 6E F6 LD L,(IY-100+VRS.MODADDR)
|
|
0939+++8893 FD 66 F7 LD H,(IY-100+VRS.MODADDR+1)
|
|
0940+++8896 19 ADD HL,DE
|
|
0941+++8897 DD 75 01 LD (IX-12+CHP.OrnPtr),L
|
|
0942+++889A DD 74 02 LD (IX-12+CHP.OrnPtr+1),H
|
|
0943+++889D C9 C_NOP RET
|
|
0944+++889E
|
|
0945+++889E 87 SETSAM ADD A,A
|
|
0946+++889F 5F LD E,A
|
|
0947+++88A0 16 00 LD D,0
|
|
0948+++88A2 FD 6E FA LD L,(IY-100+VRS.SamPtrs);
|
|
0949+++88A5 FD 66 FB LD H,(IY-100+VRS.SamPtrs+1);
|
|
0950+++88A8 19 ADD HL,DE
|
|
0951+++88A9 5E LD E,(HL)
|
|
0952+++88AA 23 INC HL
|
|
0953+++88AB 56 LD D,(HL)
|
|
0954+++88AC FD 6E F6 LD L,(IY-100+VRS.MODADDR)
|
|
0955+++88AF FD 66 F7 LD H,(IY-100+VRS.MODADDR+1)
|
|
0956+++88B2 19 ADD HL,DE
|
|
0957+++88B3 DD 75 03 LD (IX-12+CHP.SamPtr),L
|
|
0958+++88B6 DD 74 04 LD (IX-12+CHP.SamPtr+1),H
|
|
0959+++88B9 C9 RET
|
|
0960+++88BA
|
|
0961+++88BA ;ALL 16 ADDRESSES TO PROTECT FROM BROKEN PT3 MODULES
|
|
0962+++88BA 9D 88 SPCCOMS DW C_NOP
|
|
0963+++88BC F9 87 DW C_GLISS
|
|
0964+++88BE 85 87 DW C_PORTM
|
|
0965+++88C0 16 88 DW C_SMPOS
|
|
0966+++88C2 1C 88 DW C_ORPOS
|
|
0967+++88C4 22 88 DW C_VIBRT
|
|
0968+++88C6 9D 88 DW C_NOP
|
|
0969+++88C8 9D 88 DW C_NOP
|
|
0970+++88CA 3A 88 DW C_ENGLS
|
|
0971+++88CC 4F 88 DW C_DELAY
|
|
0972+++88CE 9D 88 DW C_NOP
|
|
0973+++88D0 9D 88 DW C_NOP
|
|
0974+++88D2 9D 88 DW C_NOP
|
|
0975+++88D4 9D 88 DW C_NOP
|
|
0976+++88D6 9D 88 DW C_NOP
|
|
0977+++88D8 9D 88 DW C_NOP
|
|
0978+++88DA
|
|
0979+++88DA CD FB 85 CHREGS CALL GETIX
|
|
0980+++88DD AF XOR A
|
|
0981+++88DE 32 17 8B LD (Ampl),A
|
|
0982+++88E1 DD CB 15 46 BIT 0,(IX+CHP.Flags)
|
|
0983+++88E5 E5 PUSH HL
|
|
0984+++88E6 CA 2D 8A JP Z,CH_EXIT
|
|
0985+++88E9 ED 73 77 89 LD (CSP_+1),SP
|
|
0986+++88ED DD 6E 0D LD L,(IX+CHP.OrnPtr)
|
|
0987+++88F0 DD 66 0E LD H,(IX+CHP.OrnPtr+1)
|
|
0988+++88F3 F9 LD SP,HL
|
|
0989+++88F4 D1 POP DE
|
|
0990+++88F5 67 LD H,A
|
|
0991+++88F6 DD 7E 00 LD A,(IX+CHP.PsInOr)
|
|
0992+++88F9 6F LD L,A
|
|
0993+++88FA 39 ADD HL,SP
|
|
0994+++88FB 3C INC A
|
|
0995+++88FC ;PT2 PT3
|
|
0996+++88FC 3C OrnCP INC A ;CP E CP D
|
|
0997+++88FD 38 01 JR C,CH_ORPS
|
|
0998+++88FF 01 OrnLD DB 1 ;LD A,D LD A,E
|
|
0999+++8900 DD 77 00 CH_ORPS LD (IX+CHP.PsInOr),A
|
|
1000+++8903 DD 7E 12 LD A,(IX+CHP.Note)
|
|
1001+++8906 86 ADD A,(HL)
|
|
1002+++8907 F2 0B 89 JP P,CH_NTP
|
|
1003+++890A AF XOR A
|
|
1004+++890B FE 60 CH_NTP CP 96
|
|
1005+++890D 38 02 JR C,CH_NOK
|
|
1006+++890F 3E 5F LD A,95
|
|
1007+++8911 87 CH_NOK ADD A,A
|
|
1008+++8912 08 EX AF,AF'
|
|
1009+++8913 DD 6E 0F LD L,(IX+CHP.SamPtr)
|
|
1010+++8916 DD 66 10 LD H,(IX+CHP.SamPtr+1)
|
|
1011+++8919 F9 LD SP,HL
|
|
1012+++891A D1 POP DE
|
|
1013+++891B 26 00 LD H,0
|
|
1014+++891D DD 7E 01 LD A,(IX+CHP.PsInSm)
|
|
1015+++8920 47 LD B,A
|
|
1016+++8921 87 ADD A,A
|
|
1017+++8922 87 SamClc2 ADD A,A ;or ADD A,B for PT2
|
|
1018+++8923 6F LD L,A
|
|
1019+++8924 39 ADD HL,SP
|
|
1020+++8925 F9 LD SP,HL
|
|
1021+++8926 78 LD A,B
|
|
1022+++8927 3C INC A
|
|
1023+++8928 ;PT2 PT3
|
|
1024+++8928 3C SamCP INC A ;CP E CP D
|
|
1025+++8929 38 01 JR C,CH_SMPS
|
|
1026+++892B 01 SamLD DB 1 ;LD A,D LD A,E
|
|
1027+++892C DD 77 01 CH_SMPS LD (IX+CHP.PsInSm),A
|
|
1028+++892F C1 POP BC
|
|
1029+++8930 E1 POP HL
|
|
1030+++8931
|
|
1031+++8931 ;Convert PT2 sample to PT3
|
|
1032+++8931 ;PT2 PT3
|
|
1033+++8931 E1 SamCnv POP HL ;BIT 2,C JR e_
|
|
1034+++8932 E1 POP HL
|
|
1035+++8933 60 LD H,B
|
|
1036+++8934 20 06 JR NZ,$+8
|
|
1037+++8936 EB EX DE,HL
|
|
1038+++8937 A7 AND A
|
|
1039+++8938 ED 62 SBC HL,HL
|
|
1040+++893A ED 52 SBC HL,DE
|
|
1041+++893C 51 LD D,C
|
|
1042+++893D CB 19 RR C
|
|
1043+++893F 9F SBC A,A
|
|
1044+++8940 2F CPL
|
|
1045+++8941 E6 3E AND #3E
|
|
1046+++8943 CB 19 RR C
|
|
1047+++8945 CB 18 RR B
|
|
1048+++8947 A1 AND C
|
|
1049+++8948 4F LD C,A
|
|
1050+++8949 78 LD A,B
|
|
1051+++894A 1F RRA
|
|
1052+++894B 1F RRA
|
|
1053+++894C CB 1A RR D
|
|
1054+++894E 1F RRA
|
|
1055+++894F E6 9F AND #9F
|
|
1056+++8951 47 LD B,A
|
|
1057+++8952
|
|
1058+++8952 DD 5E 08 e_ LD E,(IX+CHP.TnAcc)
|
|
1059+++8955 DD 56 09 LD D,(IX+CHP.TnAcc+1)
|
|
1060+++8958 19 ADD HL,DE
|
|
1061+++8959 CB 70 BIT 6,B
|
|
1062+++895B 28 06 JR Z,CH_NOAC
|
|
1063+++895D DD 75 08 LD (IX+CHP.TnAcc),L
|
|
1064+++8960 DD 74 09 LD (IX+CHP.TnAcc+1),H
|
|
1065+++8963 EB CH_NOAC EX DE,HL
|
|
1066+++8964 08 EX AF,AF'
|
|
1067+++8965 C6 6B ADD A,NT_&255
|
|
1068+++8967 6F LD L,A
|
|
1069+++8968 CE 8E ADC A,NT_/256
|
|
1070+++896A 95 SUB L
|
|
1071+++896B 67 LD H,A
|
|
1072+++896C F9 LD SP,HL
|
|
1073+++896D E1 POP HL
|
|
1074+++896E 19 ADD HL,DE
|
|
1075+++896F DD 5E 06 LD E,(IX+CHP.CrTnSl)
|
|
1076+++8972 DD 56 07 LD D,(IX+CHP.CrTnSl+1)
|
|
1077+++8975 19 ADD HL,DE
|
|
1078+++8976 31 31 31 CSP_ LD SP,#3131
|
|
1079+++8979 E3 EX (SP),HL
|
|
1080+++897A AF XOR A
|
|
1081+++897B DD B6 05 OR (IX+CHP.TSlCnt)
|
|
1082+++897E 28 3E JR Z,CH_AMP
|
|
1083+++8980 DD 35 05 DEC (IX+CHP.TSlCnt)
|
|
1084+++8983 20 39 JR NZ,CH_AMP
|
|
1085+++8985 DD 7E 16 LD A,(IX+CHP.TnSlDl)
|
|
1086+++8988 DD 77 05 LD (IX+CHP.TSlCnt),A
|
|
1087+++898B DD 6E 17 LD L,(IX+CHP.TSlStp)
|
|
1088+++898E DD 66 18 LD H,(IX+CHP.TSlStp+1)
|
|
1089+++8991 7C LD A,H
|
|
1090+++8992 19 ADD HL,DE
|
|
1091+++8993 DD 75 06 LD (IX+CHP.CrTnSl),L
|
|
1092+++8996 DD 74 07 LD (IX+CHP.CrTnSl+1),H
|
|
1093+++8999 DD CB 15 56 BIT 2,(IX+CHP.Flags)
|
|
1094+++899D 20 1F JR NZ,CH_AMP
|
|
1095+++899F DD 5E 19 LD E,(IX+CHP.TnDelt)
|
|
1096+++89A2 DD 56 1A LD D,(IX+CHP.TnDelt+1)
|
|
1097+++89A5 A7 AND A
|
|
1098+++89A6 28 01 JR Z,CH_STPP
|
|
1099+++89A8 EB EX DE,HL
|
|
1100+++89A9 ED 52 CH_STPP SBC HL,DE
|
|
1101+++89AB FA BE 89 JP M,CH_AMP
|
|
1102+++89AE DD 7E 13 LD A,(IX+CHP.SlToNt)
|
|
1103+++89B1 DD 77 12 LD (IX+CHP.Note),A
|
|
1104+++89B4 AF XOR A
|
|
1105+++89B5 DD 77 05 LD (IX+CHP.TSlCnt),A
|
|
1106+++89B8 DD 77 06 LD (IX+CHP.CrTnSl),A
|
|
1107+++89BB DD 77 07 LD (IX+CHP.CrTnSl+1),A
|
|
1108+++89BE DD 7E 02 CH_AMP LD A,(IX+CHP.CrAmSl)
|
|
1109+++89C1 CB 79 BIT 7,C
|
|
1110+++89C3 28 13 JR Z,CH_NOAM
|
|
1111+++89C5 CB 71 BIT 6,C
|
|
1112+++89C7 28 07 JR Z,CH_AMIN
|
|
1113+++89C9 FE 0F CP 15
|
|
1114+++89CB 28 0B JR Z,CH_NOAM
|
|
1115+++89CD 3C INC A
|
|
1116+++89CE 18 05 JR CH_SVAM
|
|
1117+++89D0 FE F1 CH_AMIN CP -15
|
|
1118+++89D2 28 04 JR Z,CH_NOAM
|
|
1119+++89D4 3D DEC A
|
|
1120+++89D5 DD 77 02 CH_SVAM LD (IX+CHP.CrAmSl),A
|
|
1121+++89D8 6F CH_NOAM LD L,A
|
|
1122+++89D9 78 LD A,B
|
|
1123+++89DA E6 0F AND 15
|
|
1124+++89DC 85 ADD A,L
|
|
1125+++89DD F2 E1 89 JP P,CH_APOS
|
|
1126+++89E0 AF XOR A
|
|
1127+++89E1 FE 10 CH_APOS CP 16
|
|
1128+++89E3 38 02 JR C,CH_VOL
|
|
1129+++89E5 3E 0F LD A,15
|
|
1130+++89E7 DD B6 1C CH_VOL OR (IX+CHP.Volume)
|
|
1131+++89EA C6 6B ADD A,VT_&255
|
|
1132+++89EC 6F LD L,A
|
|
1133+++89ED CE 8D ADC A,VT_/256
|
|
1134+++89EF 95 SUB L
|
|
1135+++89F0 67 LD H,A
|
|
1136+++89F1 7E LD A,(HL)
|
|
1137+++89F2 CB 41 CH_ENV BIT 0,C
|
|
1138+++89F4 20 03 JR NZ,CH_NOEN
|
|
1139+++89F6 DD B6 14 OR (IX+CHP.Env_En)
|
|
1140+++89F9 32 17 8B CH_NOEN LD (Ampl),A
|
|
1141+++89FC CB 78 BIT 7,B
|
|
1142+++89FE 79 LD A,C
|
|
1143+++89FF 28 1A JR Z,NO_ENSL
|
|
1144+++8A01 17 RLA
|
|
1145+++8A02 17 RLA
|
|
1146+++8A03 CB 2F SRA A
|
|
1147+++8A05 CB 2F SRA A
|
|
1148+++8A07 CB 2F SRA A
|
|
1149+++8A09 DD 86 04 ADD A,(IX+CHP.CrEnSl) ;SEE COMMENT BELOW
|
|
1150+++8A0C CB 68 BIT 5,B
|
|
1151+++8A0E 28 03 JR Z,NO_ENAC
|
|
1152+++8A10 DD 77 04 LD (IX+CHP.CrEnSl),A
|
|
1153+++8A13 FD 86 12 NO_ENAC ADD A,(IY-100+VRS.AddToEn) ;BUG IN PT3 - NEED WORD HERE
|
|
1154+++8A16 FD 77 12 LD (IY-100+VRS.AddToEn),A
|
|
1155+++8A19 18 0E JR CH_MIX
|
|
1156+++8A1B 1F NO_ENSL RRA
|
|
1157+++8A1C DD 86 03 ADD A,(IX+CHP.CrNsSl)
|
|
1158+++8A1F FD 77 11 LD (IY-100+VRS.AddToNs),A
|
|
1159+++8A22 CB 68 BIT 5,B
|
|
1160+++8A24 28 03 JR Z,CH_MIX
|
|
1161+++8A26 DD 77 03 LD (IX+CHP.CrNsSl),A
|
|
1162+++8A29 78 CH_MIX LD A,B
|
|
1163+++8A2A 1F RRA
|
|
1164+++8A2B E6 48 AND #48
|
|
1165+++8A2D FD B6 1C CH_EXIT OR (IY-100+VRS.AYREGS+Mixer)
|
|
1166+++8A30 0F RRCA
|
|
1167+++8A31 FD 77 1C LD (IY-100+VRS.AYREGS+Mixer),A
|
|
1168+++8A34 E1 POP HL
|
|
1169+++8A35 AF XOR A
|
|
1170+++8A36 DD B6 0A OR (IX+CHP.COnOff)
|
|
1171+++8A39 C8 RET Z
|
|
1172+++8A3A DD 35 0A DEC (IX+CHP.COnOff)
|
|
1173+++8A3D C0 RET NZ
|
|
1174+++8A3E DD AE 15 XOR (IX+CHP.Flags)
|
|
1175+++8A41 DD 77 15 LD (IX+CHP.Flags),A
|
|
1176+++8A44 1F RRA
|
|
1177+++8A45 DD 7E 0B LD A,(IX+CHP.OnOffD)
|
|
1178+++8A48 38 03 JR C,CH_ONDL
|
|
1179+++8A4A DD 7E 0C LD A,(IX+CHP.OffOnD)
|
|
1180+++8A4D DD 77 0A CH_ONDL LD (IX+CHP.COnOff),A
|
|
1181+++8A50 C9 RET
|
|
1182+++8A51
|
|
1183+++8A51 AF PLAY_ XOR A
|
|
1184+++8A52 FD 77 12 LD (IY-100+VRS.AddToEn),A
|
|
1185+++8A55 FD 77 1C LD (IY-100+VRS.AYREGS+Mixer),A
|
|
1186+++8A58 3D DEC A
|
|
1187+++8A59 FD 77 22 LD (IY-100+VRS.AYREGS+EnvTp),A
|
|
1188+++8A5C FD 35 09 DEC (IY-100+VRS.DelyCnt)
|
|
1189+++8A5F C2 04 8B JP NZ,PL2
|
|
1190+++8A62 FD 35 BA DEC (IY-100+VRS.ChanA+CHP.NtSkCn)
|
|
1191+++8A65 20 69 JR NZ,PL1B
|
|
1192+++8A67 FD 4E FE LD C,(IY-100+VRS.AdInPtA)
|
|
1193+++8A6A FD 46 FF LD B,(IY-100+VRS.AdInPtA+1)
|
|
1194+++8A6D 0A LD A,(BC)
|
|
1195+++8A6E A7 AND A
|
|
1196+++8A6F 20 53 JR NZ,PL1A
|
|
1197+++8A71 57 LD D,A
|
|
1198+++8A72 FD 77 10 LD (IY-100+VRS.Ns_Base),A
|
|
1199+++8A75 FD 6E 04 LD L,(IY-100+VRS.CrPsPtr)
|
|
1200+++8A78 FD 66 05 LD H,(IY-100+VRS.CrPsPtr+1)
|
|
1201+++8A7B 23 INC HL
|
|
1202+++8A7C 7E LD A,(HL)
|
|
1203+++8A7D 3C INC A
|
|
1204+++8A7E 20 08 JR NZ,PLNLP
|
|
1205+++8A80
|
|
1206+++8A80 IF LoopChecker
|
|
1207+++8A80~ CALL CHECKLP
|
|
1208+++8A80 ENDIF
|
|
1209+++8A80
|
|
1210+++8A80 FD 6E 06 LD L,(IY-100+VRS.LPosPtr)
|
|
1211+++8A83 FD 66 07 LD H,(IY-100+VRS.LPosPtr+1)
|
|
1212+++8A86 7E LD A,(HL)
|
|
1213+++8A87 3C INC A
|
|
1214+++8A88 CD DF 85 PLNLP CALL SETCPPT
|
|
1215+++8A8B 3D DEC A
|
|
1216+++8A8C FD CB 9E 4E BIT 1,(IY-100+VRS.ModNum)
|
|
1217+++8A90 28 03 JR Z,NoAlCo
|
|
1218+++8A92 TSSub EQU $+1
|
|
1219+++8A92 D6 D6 SUB #D6
|
|
1220+++8A94 2F CPL
|
|
1221+++8A95 NoAlCo
|
|
1222+++8A95 ;PT2 PT3
|
|
1223+++8A95 3D PsCalc DEC A ;ADD A,A NOP
|
|
1224+++8A96 3D DEC A ;ADD A,(HL) NOP
|
|
1225+++8A97 87 ADD A,A
|
|
1226+++8A98 5F LD E,A
|
|
1227+++8A99 CB 12 RL D
|
|
1228+++8A9B
|
|
1229+++8A9B IF CurPosCounter
|
|
1230+++8A9B~ LD A,L
|
|
1231+++8A9B~ SUB (IY-100+VRS.PosSub)
|
|
1232+++8A9B~ LD (IY-100+VRS.CurPos),A
|
|
1233+++8A9B ENDIF
|
|
1234+++8A9B
|
|
1235+++8A9B FD 6E FC LD L,(IY-100+VRS.PatsPtr)
|
|
1236+++8A9E FD 66 FD LD H,(IY-100+VRS.PatsPtr+1)
|
|
1237+++8AA1 19 ADD HL,DE
|
|
1238+++8AA2 FD 5E F6 LD E,(IY-100+VRS.MODADDR)
|
|
1239+++8AA5 FD 56 F7 LD D,(IY-100+VRS.MODADDR+1)
|
|
1240+++8AA8 ED 73 C2 8A LD (PSP_+1),SP
|
|
1241+++8AAC F9 LD SP,HL
|
|
1242+++8AAD E1 POP HL
|
|
1243+++8AAE 19 ADD HL,DE
|
|
1244+++8AAF 44 LD B,H
|
|
1245+++8AB0 4D LD C,L
|
|
1246+++8AB1 E1 POP HL
|
|
1247+++8AB2 19 ADD HL,DE
|
|
1248+++8AB3 FD 75 00 LD (IY-100+VRS.AdInPtB),L
|
|
1249+++8AB6 FD 74 01 LD (IY-100+VRS.AdInPtB+1),H
|
|
1250+++8AB9 E1 POP HL
|
|
1251+++8ABA 19 ADD HL,DE
|
|
1252+++8ABB FD 75 02 LD (IY-100+VRS.AdInPtC),L
|
|
1253+++8ABE FD 74 03 LD (IY-100+VRS.AdInPtC+1),H
|
|
1254+++8AC1 31 31 31 PSP_ LD SP,#3131
|
|
1255+++8AC4 11 AB FF PL1A LD DE,VRS.ChanA+12-100
|
|
1256+++8AC7 CD 02 86 CALL PTDECOD
|
|
1257+++8ACA FD 71 FE LD (IY-100+VRS.AdInPtA),C
|
|
1258+++8ACD FD 70 FF LD (IY-100+VRS.AdInPtA+1),B
|
|
1259+++8AD0
|
|
1260+++8AD0 FD 35 D7 PL1B DEC (IY-100+VRS.ChanB+CHP.NtSkCn)
|
|
1261+++8AD3 20 12 JR NZ,PL1C
|
|
1262+++8AD5 11 C8 FF LD DE,VRS.ChanB+12-100
|
|
1263+++8AD8 FD 4E 00 LD C,(IY-100+VRS.AdInPtB)
|
|
1264+++8ADB FD 46 01 LD B,(IY-100+VRS.AdInPtB+1)
|
|
1265+++8ADE CD 02 86 CALL PTDECOD
|
|
1266+++8AE1 FD 71 00 LD (IY-100+VRS.AdInPtB),C
|
|
1267+++8AE4 FD 70 01 LD (IY-100+VRS.AdInPtB+1),B
|
|
1268+++8AE7
|
|
1269+++8AE7 FD 35 F4 PL1C DEC (IY-100+VRS.ChanC+CHP.NtSkCn)
|
|
1270+++8AEA 20 12 JR NZ,PL1D
|
|
1271+++8AEC 11 E5 FF LD DE,VRS.ChanC+12-100
|
|
1272+++8AEF FD 4E 02 LD C,(IY-100+VRS.AdInPtC)
|
|
1273+++8AF2 FD 46 03 LD B,(IY-100+VRS.AdInPtC+1)
|
|
1274+++8AF5 CD 02 86 CALL PTDECOD
|
|
1275+++8AF8 FD 71 02 LD (IY-100+VRS.AdInPtC),C
|
|
1276+++8AFB FD 70 03 LD (IY-100+VRS.AdInPtC+1),B
|
|
1277+++8AFE
|
|
1278+++8AFE FD 7E 08 PL1D LD A,(IY-100+VRS.Delay)
|
|
1279+++8B01 FD 77 09 LD (IY-100+VRS.DelyCnt),A
|
|
1280+++8B04
|
|
1281+++8B04 11 9F FF PL2 LD DE,VRS.ChanA-100
|
|
1282+++8B07 FD 6E 15 LD L,(IY-100+VRS.AYREGS+TonA)
|
|
1283+++8B0A FD 66 16 LD H,(IY-100+VRS.AYREGS+TonA+1)
|
|
1284+++8B0D CD DA 88 CALL CHREGS
|
|
1285+++8B10 FD 75 15 LD (IY-100+VRS.AYREGS+TonA),L
|
|
1286+++8B13 FD 74 16 LD (IY-100+VRS.AYREGS+TonA+1),H
|
|
1287+++8B16 Ampl EQU $+1
|
|
1288+++8B16 3E 3E LD A,#3E
|
|
1289+++8B18 FD 77 1D LD (IY-100+VRS.AYREGS+AmplA),A
|
|
1290+++8B1B 11 BC FF LD DE,VRS.ChanB-100
|
|
1291+++8B1E FD 6E 17 LD L,(IY-100+VRS.AYREGS+TonB)
|
|
1292+++8B21 FD 66 18 LD H,(IY-100+VRS.AYREGS+TonB+1)
|
|
1293+++8B24 CD DA 88 CALL CHREGS
|
|
1294+++8B27 FD 75 17 LD (IY-100+VRS.AYREGS+TonB),L
|
|
1295+++8B2A FD 74 18 LD (IY-100+VRS.AYREGS+TonB+1),H
|
|
1296+++8B2D 3A 17 8B LD A,(Ampl)
|
|
1297+++8B30 FD 77 1E LD (IY-100+VRS.AYREGS+AmplB),A
|
|
1298+++8B33 11 D9 FF LD DE,VRS.ChanC-100
|
|
1299+++8B36 FD 6E 19 LD L,(IY-100+VRS.AYREGS+TonC)
|
|
1300+++8B39 FD 66 1A LD H,(IY-100+VRS.AYREGS+TonC+1)
|
|
1301+++8B3C CD DA 88 CALL CHREGS
|
|
1302+++8B3F FD 75 19 LD (IY-100+VRS.AYREGS+TonC),L
|
|
1303+++8B42 FD 74 1A LD (IY-100+VRS.AYREGS+TonC+1),H
|
|
1304+++8B45 3A 17 8B LD A,(Ampl)
|
|
1305+++8B48 FD 77 1F LD (IY-100+VRS.AYREGS+AmplC),A
|
|
1306+++8B4B
|
|
1307+++8B4B FD 7E 10 LD A,(IY-100+VRS.Ns_Base)
|
|
1308+++8B4E FD 86 11 ADD (IY-100+VRS.AddToNs)
|
|
1309+++8B51 FD 77 1B LD (IY-100+VRS.AYREGS+Noise),A
|
|
1310+++8B54
|
|
1311+++8B54 FD 7E 12 LD A,(IY-100+VRS.AddToEn)
|
|
1312+++8B57 5F LD E,A
|
|
1313+++8B58 87 ADD A,A
|
|
1314+++8B59 9F SBC A,A
|
|
1315+++8B5A 57 LD D,A
|
|
1316+++8B5B FD 6E 13 LD L,(IY-100+VRS.EnvBase)
|
|
1317+++8B5E FD 66 14 LD H,(IY-100+VRS.EnvBase+1)
|
|
1318+++8B61 19 ADD HL,DE
|
|
1319+++8B62 FD 5E 0C LD E,(IY-100+VRS.CurESld)
|
|
1320+++8B65 FD 56 0D LD D,(IY-100+VRS.CurESld+1)
|
|
1321+++8B68 19 ADD HL,DE
|
|
1322+++8B69 FD 75 20 LD (IY-100+VRS.AYREGS+Env),L
|
|
1323+++8B6C FD 74 21 LD (IY-100+VRS.AYREGS+Env+1),H
|
|
1324+++8B6F
|
|
1325+++8B6F AF XOR A
|
|
1326+++8B70 FD B6 0F OR (IY-100+VRS.CurEDel)
|
|
1327+++8B73 C8 RET Z
|
|
1328+++8B74 FD 35 0F DEC (IY-100+VRS.CurEDel)
|
|
1329+++8B77 C0 RET NZ
|
|
1330+++8B78 FD 7E 0E LD A,(IY-100+VRS.Env_Del)
|
|
1331+++8B7B FD 77 0F LD (IY-100+VRS.CurEDel),A
|
|
1332+++8B7E FD 6E 0A LD L,(IY-100+VRS.ESldAdd)
|
|
1333+++8B81 FD 66 0B LD H,(IY-100+VRS.ESldAdd+1)
|
|
1334+++8B84 19 ADD HL,DE
|
|
1335+++8B85 C3 F4 85 JP SETESLD
|
|
1336+++8B88
|
|
1337+++8B88 FD 21 D1 8C PLAY LD IY,VARS1+100
|
|
1338+++8B8C CD 51 8A CALL PLAY_
|
|
1339+++8B8F 3A 6C 8C LD A,(is_ts)
|
|
1340+++8B92 A7 AND A
|
|
1341+++8B93 28 07 JR Z,PL_nts
|
|
1342+++8B95 FD 21 58 8D LD IY,VARS2+100
|
|
1343+++8B99 CD 51 8A CALL PLAY_
|
|
1344+++8B9C PL_nts
|
|
1345+++8B9C IF Basic
|
|
1346+++8B9C~ LD IY,#5C3A
|
|
1347+++8B9C ENDIF
|
|
1348+++8B9C
|
|
1349+++8B9C 01 FD FF ROUT LD BC,#FFFD
|
|
1350+++8B9F 3A 6C 8C LD A,(is_ts)
|
|
1351+++8BA2 A7 AND A
|
|
1352+++8BA3 IFDEF ONtfm
|
|
1353+++8BA3 2E F9 LD L,#F9
|
|
1354+++8BA5 ED 69 OUT (C),L
|
|
1355+++8BA7 ELSE
|
|
1356+++8BA7~ JR Z,r_nts ;keep old standard
|
|
1357+++8BA7~ OUT (C),B
|
|
1358+++8BA7 ENDIF
|
|
1359+++8BA7 08 r_nts EX AF,AF'
|
|
1360+++8BA8
|
|
1361+++8BA8 IF ACBBAC
|
|
1362+++8BA8~ LD IX,VARS1+VRS.AYREGS
|
|
1363+++8BA8 ELSE
|
|
1364+++8BA8 21 E6 8C LD HL,VARS1+VRS.AYREGS
|
|
1365+++8BAB ENDIF
|
|
1366+++8BAB
|
|
1367+++8BAB CD B8 8B CALL ROUT_
|
|
1368+++8BAE 08 EX AF,AF'
|
|
1369+++8BAF C8 RET Z
|
|
1370+++8BB0 42 LD B,D
|
|
1371+++8BB1
|
|
1372+++8BB1 IFDEF ONtfm
|
|
1373+++8BB1 3E F8 LD A,#F8
|
|
1374+++8BB3 ELSE
|
|
1375+++8BB3~ CPL
|
|
1376+++8BB3 ENDIF
|
|
1377+++8BB3 ED 79 OUT (C),A
|
|
1378+++8BB5
|
|
1379+++8BB5 IF ACBBAC
|
|
1380+++8BB5~ LD IX,VARS2+VRS.AYREGS
|
|
1381+++8BB5 ELSE
|
|
1382+++8BB5 21 6D 8D LD HL,VARS2+VRS.AYREGS
|
|
1383+++8BB8 ENDIF
|
|
1384+++8BB8
|
|
1385+++8BB8 ROUT_
|
|
1386+++8BB8 IF ACBBAC
|
|
1387+++8BB8~ LD A,(SETUP)
|
|
1388+++8BB8~ AND 12
|
|
1389+++8BB8~ JR Z,ABC
|
|
1390+++8BB8~ ADD A,CHTABLE
|
|
1391+++8BB8~ LD E,A
|
|
1392+++8BB8~ ADC A,CHTABLE/256
|
|
1393+++8BB8~ SUB E
|
|
1394+++8BB8~ LD D,A
|
|
1395+++8BB8~ LD B,0
|
|
1396+++8BB8~ PUSH IX
|
|
1397+++8BB8~ POP HL
|
|
1398+++8BB8~ LD A,(DE)
|
|
1399+++8BB8~ INC DE
|
|
1400+++8BB8~ LD C,A
|
|
1401+++8BB8~ ADD HL,BC
|
|
1402+++8BB8~ LD A,(IX+TonB)
|
|
1403+++8BB8~ LD C,(HL)
|
|
1404+++8BB8~ LD (IX+TonB),C
|
|
1405+++8BB8~ LD (HL),A
|
|
1406+++8BB8~ INC HL
|
|
1407+++8BB8~ LD A,(IX+TonB+1)
|
|
1408+++8BB8~ LD C,(HL)
|
|
1409+++8BB8~ LD (IX+TonB+1),C
|
|
1410+++8BB8~ LD (HL),A
|
|
1411+++8BB8~ LD A,(DE)
|
|
1412+++8BB8~ INC DE
|
|
1413+++8BB8~ LD C,A
|
|
1414+++8BB8~ ADD HL,BC
|
|
1415+++8BB8~ LD A,(IX+AmplB)
|
|
1416+++8BB8~ LD C,(HL)
|
|
1417+++8BB8~ LD (IX+AmplB),C
|
|
1418+++8BB8~ LD (HL),A
|
|
1419+++8BB8~ LD A,(DE)
|
|
1420+++8BB8~ INC DE
|
|
1421+++8BB8~ LD (RxCA1),A
|
|
1422+++8BB8~ XOR 8
|
|
1423+++8BB8~ LD (RxCA2),A
|
|
1424+++8BB8~ LD A,(DE)
|
|
1425+++8BB8~ AND (IX+Mixer)
|
|
1426+++8BB8~ LD E,A
|
|
1427+++8BB8~ LD A,(IX+Mixer)
|
|
1428+++8BB8~ RxCA1 DB #E6
|
|
1429+++8BB8~ AND %010010
|
|
1430+++8BB8~ OR E
|
|
1431+++8BB8~ LD E,A
|
|
1432+++8BB8~ LD A,(IX+Mixer)
|
|
1433+++8BB8~ AND %010010
|
|
1434+++8BB8~ RxCA2 OR E
|
|
1435+++8BB8~ OR E
|
|
1436+++8BB8~ LD (IX+Mixer),A
|
|
1437+++8BB8~ ABC
|
|
1438+++8BB8 ENDIF
|
|
1439+++8BB8
|
|
1440+++8BB8 AF XOR A
|
|
1441+++8BB9 11 BF FF LD DE,#FFBF
|
|
1442+++8BBC
|
|
1443+++8BBC IF ACBBAC
|
|
1444+++8BBC~ LD BC,#FFFD
|
|
1445+++8BBC~ PUSH IX
|
|
1446+++8BBC~ POP HL
|
|
1447+++8BBC ENDIF
|
|
1448+++8BBC
|
|
1449+++8BBC LOUT
|
|
1450+++8BBC IFDEF ONtfm
|
|
1451+++8BBC ED 70 INF
|
|
1452+++8BBE FA BC 8B JP M,$-2
|
|
1453+++8BC1 ENDIF
|
|
1454+++8BC1 ED 79 OUT (C),A
|
|
1455+++8BC3 IFDEF ONtfm
|
|
1456+++8BC3 ED 70 INF
|
|
1457+++8BC5 FA C3 8B JP M,$-2
|
|
1458+++8BC8 ENDIF
|
|
1459+++8BC8 43 LD B,E
|
|
1460+++8BC9 ED A3 OUTI
|
|
1461+++8BCB 42 LD B,D
|
|
1462+++8BCC 3C INC A
|
|
1463+++8BCD FE 0D CP 13
|
|
1464+++8BCF 20 EB JR NZ,LOUT
|
|
1465+++8BD1 IFDEF ONtfm
|
|
1466+++8BD1 ED 70 INF
|
|
1467+++8BD3 FA D1 8B JP M,$-2
|
|
1468+++8BD6 ENDIF
|
|
1469+++8BD6 ED 79 OUT (C),A
|
|
1470+++8BD8 7E LD A,(HL)
|
|
1471+++8BD9 A7 AND A
|
|
1472+++8BDA F8 RET M
|
|
1473+++8BDB IFDEF ONtfm
|
|
1474+++8BDB ED 70 INF
|
|
1475+++8BDD FA DB 8B JP M,$-2
|
|
1476+++8BE0 ENDIF
|
|
1477+++8BE0 43 LD B,E
|
|
1478+++8BE1 ED 79 OUT (C),A
|
|
1479+++8BE3 C9 RET
|
|
1480+++8BE4
|
|
1481+++8BE4 IF ACBBAC
|
|
1482+++8BE4~ CHTABLE EQU $-4
|
|
1483+++8BE4~ DB 4,5,15,%001001,0,7,7,%100100
|
|
1484+++8BE4 ENDIF
|
|
1485+++8BE4
|
|
1486+++8BE4 64 NT_DATA DB (T_NEW_0-T1_)*2
|
|
1487+++8BE5 2A DB TCNEW_0-T_
|
|
1488+++8BE6 65 DB (T_OLD_0-T1_)*2+1
|
|
1489+++8BE7 00 DB TCOLD_0-T_
|
|
1490+++8BE8 01 DB (T_NEW_1-T1_)*2+1
|
|
1491+++8BE9 0C DB TCNEW_1-T_
|
|
1492+++8BEA 01 DB (T_OLD_1-T1_)*2+1
|
|
1493+++8BEB 0C DB TCOLD_1-T_
|
|
1494+++8BEC 94 DB (T_NEW_2-T1_)*2
|
|
1495+++8BED 35 DB TCNEW_2-T_
|
|
1496+++8BEE 30 DB (T_OLD_2-T1_)*2
|
|
1497+++8BEF 0E DB TCOLD_2-T_
|
|
1498+++8BF0 60 DB (T_NEW_3-T1_)*2
|
|
1499+++8BF1 20 DB TCNEW_3-T_
|
|
1500+++8BF2 60 DB (T_OLD_3-T1_)*2
|
|
1501+++8BF3 21 DB TCOLD_3-T_
|
|
1502+++8BF4
|
|
1503+++8BF4 T_
|
|
1504+++8BF4
|
|
1505+++8BF4 TCOLD_0 DB #00+1,#04+1,#08+1,#0A+1,#0C+1,#0E+1,#12+1,#14+1
|
|
1505+++8BF4 0105090B0D0F1315
|
|
1506+++8BFC 19 25 3D 00 DB #18+1,#24+1,#3C+1,0
|
|
1507+++8C00 5D 00 TCOLD_1 DB #5C+1,0
|
|
1508+++8C02 TCOLD_2 DB #30+1,#36+1,#4C+1,#52+1,#5E+1,#70+1,#82,#8C,#9C
|
|
1508+++8C02 31374D535F71828C9C
|
|
1509+++8C0B DB #9E,#A0,#A6,#A8,#AA,#AC,#AE,#AE,0
|
|
1509+++8C0B 9EA0A6A8AAACAEAE00
|
|
1510+++8C14 57 TCNEW_3 DB #56+1
|
|
1511+++8C15 TCOLD_3 DB #1E+1,#22+1,#24+1,#28+1,#2C+1,#2E+1,#32+1,#BE+1,0
|
|
1511+++8C15 1F2325292D2F33BF00
|
|
1512+++8C1E TCNEW_0 DB #1C+1,#20+1,#22+1,#26+1,#2A+1,#2C+1,#30+1,#54+1
|
|
1512+++8C1E 1D2123272B2D3155
|
|
1513+++8C26 BD BF 00 DB #BC+1,#BE+1,0
|
|
1514+++8C29 TCNEW_1 EQU TCOLD_1
|
|
1515+++8C29 TCNEW_2 DB #1A+1,#20+1,#24+1,#28+1,#2A+1,#3A+1,#4C+1,#5E+1
|
|
1515+++8C29 1B2125292B3B4D5F
|
|
1516+++8C31 BB BD BF 00 DB #BA+1,#BC+1,#BE+1,0
|
|
1517+++8C35
|
|
1518+++8C35 PT3EMPTYORN EQU $-1
|
|
1519+++8C35 01 00 DB 1,0
|
|
1520+++8C37
|
|
1521+++8C37 ;first 12 values of tone tables (packed)
|
|
1522+++8C37
|
|
1523+++8C37 0D D8 T_PACK DB #06EC*2/256,#06EC*2&255
|
|
1524+++8C39 69 DB #0755-#06EC
|
|
1525+++8C3A 70 DB #07C5-#0755
|
|
1526+++8C3B 76 DB #083B-#07C5
|
|
1527+++8C3C 7D DB #08B8-#083B
|
|
1528+++8C3D 85 DB #093D-#08B8
|
|
1529+++8C3E 8D DB #09CA-#093D
|
|
1530+++8C3F 95 DB #0A5F-#09CA
|
|
1531+++8C40 9D DB #0AFC-#0A5F
|
|
1532+++8C41 A8 DB #0BA4-#0AFC
|
|
1533+++8C42 B1 DB #0C55-#0BA4
|
|
1534+++8C43 BB DB #0D10-#0C55
|
|
1535+++8C44 0C DA DB #066D*2/256,#066D*2&255
|
|
1536+++8C46 62 DB #06CF-#066D
|
|
1537+++8C47 68 DB #0737-#06CF
|
|
1538+++8C48 6D DB #07A4-#0737
|
|
1539+++8C49 75 DB #0819-#07A4
|
|
1540+++8C4A 7B DB #0894-#0819
|
|
1541+++8C4B 83 DB #0917-#0894
|
|
1542+++8C4C 8A DB #09A1-#0917
|
|
1543+++8C4D 92 DB #0A33-#09A1
|
|
1544+++8C4E 9C DB #0ACF-#0A33
|
|
1545+++8C4F A4 DB #0B73-#0ACF
|
|
1546+++8C50 AF DB #0C22-#0B73
|
|
1547+++8C51 B8 DB #0CDA-#0C22
|
|
1548+++8C52 0E 08 DB #0704*2/256,#0704*2&255
|
|
1549+++8C54 6A DB #076E-#0704
|
|
1550+++8C55 72 DB #07E0-#076E
|
|
1551+++8C56 78 DB #0858-#07E0
|
|
1552+++8C57 7E DB #08D6-#0858
|
|
1553+++8C58 86 DB #095C-#08D6
|
|
1554+++8C59 90 DB #09EC-#095C
|
|
1555+++8C5A 96 DB #0A82-#09EC
|
|
1556+++8C5B A0 DB #0B22-#0A82
|
|
1557+++8C5C AA DB #0BCC-#0B22
|
|
1558+++8C5D B4 DB #0C80-#0BCC
|
|
1559+++8C5E BE DB #0D3E-#0C80
|
|
1560+++8C5F 0F C0 DB #07E0*2/256,#07E0*2&255
|
|
1561+++8C61 78 DB #0858-#07E0
|
|
1562+++8C62 88 DB #08E0-#0858
|
|
1563+++8C63 80 DB #0960-#08E0
|
|
1564+++8C64 90 DB #09F0-#0960
|
|
1565+++8C65 98 DB #0A88-#09F0
|
|
1566+++8C66 A0 DB #0B28-#0A88
|
|
1567+++8C67 B0 DB #0BD8-#0B28
|
|
1568+++8C68 A8 DB #0C80-#0BD8
|
|
1569+++8C69 E0 DB #0D60-#0C80
|
|
1570+++8C6A B0 DB #0E10-#0D60
|
|
1571+++8C6B E8 DB #0EF8-#0E10
|
|
1572+++8C6C
|
|
1573+++8C6C ;vars from here can be stripped
|
|
1574+++8C6C ;you can move VARS to any other address
|
|
1575+++8C6C
|
|
1576+++8C6C VARS
|
|
1577+++8C6C
|
|
1578+++8C6C 00 is_ts DB 0
|
|
1579+++8C6D
|
|
1580+++8C6D ;ChannelsVars
|
|
1581+++8C6D STRUCT CHP
|
|
1582+++8C6D~ ;reset group
|
|
1583+++8C6D~ PsInOr DB 0
|
|
1584+++8C6D~ PsInSm DB 0
|
|
1585+++8C6D~ CrAmSl DB 0
|
|
1586+++8C6D~ CrNsSl DB 0
|
|
1587+++8C6D~ CrEnSl DB 0
|
|
1588+++8C6D~ TSlCnt DB 0
|
|
1589+++8C6D~ CrTnSl DW 0
|
|
1590+++8C6D~ TnAcc DW 0
|
|
1591+++8C6D~ COnOff DB 0
|
|
1592+++8C6D~ ;reset group
|
|
1593+++8C6D~ 1594+++8C6D~ OnOffD DB 0
|
|
1595+++8C6D~ 1596+++8C6D~ ;IX for PTDECOD here (+12)
|
|
1597+++8C6D~ OffOnD DB 0
|
|
1598+++8C6D~ OrnPtr DW 0
|
|
1599+++8C6D~ SamPtr DW 0
|
|
1600+++8C6D~ NNtSkp DB 0
|
|
1601+++8C6D~ Note DB 0
|
|
1602+++8C6D~ SlToNt DB 0
|
|
1603+++8C6D~ Env_En DB 0
|
|
1604+++8C6D~ Flags DB 0
|
|
1605+++8C6D~ ;Enabled - 0, SimpleGliss - 2
|
|
1606+++8C6D~ TnSlDl DB 0
|
|
1607+++8C6D~ TSlStp DW 0
|
|
1608+++8C6D~ TnDelt DW 0
|
|
1609+++8C6D~ NtSkCn DB 0
|
|
1610+++8C6D~ Volume DB 0
|
|
1611+++8C6D ENDS
|
|
1612+++8C6D
|
|
1613+++8C6D STRUCT VRS
|
|
1614+++8C6D~ 1615+++8C6D~ ;IF not works in STRUCT in SjASM :(
|
|
1616+++8C6D~ ; IF CurPosCounter
|
|
1617+++8C6D~ CurPos DB 0
|
|
1618+++8C6D~ PosSub DB 0
|
|
1619+++8C6D~ ; ENDIF
|
|
1620+++8C6D~ 1621+++8C6D~ ModNum DB 0 ;bit0: ChipNum
|
|
1622+++8C6D~ ;bit1: 1-reversed patterns order (AlCo TS)
|
|
1623+++8C6D~ 1624+++8C6D~ ChanA DS CHP
|
|
1625+++8C6D~ ChanB DS CHP
|
|
1626+++8C6D~ ChanC DS CHP
|
|
1627+++8C6D~ 1628+++8C6D~ ;GlobalVars
|
|
1629+++8C6D~ MODADDR DW 0
|
|
1630+++8C6D~ OrnPtrs DW 0
|
|
1631+++8C6D~ SamPtrs DW 0
|
|
1632+++8C6D~ PatsPtr DW 0
|
|
1633+++8C6D~ AdInPtA DW 0
|
|
1634+++8C6D~ AdInPtB DW 0
|
|
1635+++8C6D~ AdInPtC DW 0
|
|
1636+++8C6D~ CrPsPtr DW 0
|
|
1637+++8C6D~ LPosPtr DW 0
|
|
1638+++8C6D~ Delay DB 0
|
|
1639+++8C6D~ DelyCnt DB 0
|
|
1640+++8C6D~ ESldAdd DW 0
|
|
1641+++8C6D~ CurESld DW 0
|
|
1642+++8C6D~ Env_Del DB 0
|
|
1643+++8C6D~ CurEDel DB 0
|
|
1644+++8C6D~ Ns_Base DB 0
|
|
1645+++8C6D~ AddToNs DB 0
|
|
1646+++8C6D~ AddToEn DB 0
|
|
1647+++8C6D~ EnvBase DW 0
|
|
1648+++8C6D~ AYREGS DS 14
|
|
1649+++8C6D ENDS
|
|
1650+++8C6D
|
|
1651+++8C6D 00 VARS1 DS VRS
|
|
1652+++8CF4 00 VARS2 DS VRS
|
|
1653+++8D7B
|
|
1654+++8D7B VT_ EQU $-16
|
|
1655+++8D7B 00 DS 256-16 ;CreatedVolumeTableAddress
|
|
1656+++8E6B
|
|
1657+++8E6B T1_ EQU VT_+16 ;Tone tables data depacked here
|
|
1658+++8E6B
|
|
1659+++8E6B T_OLD_1 EQU T1_
|
|
1660+++8E6B T_OLD_2 EQU T_OLD_1+24
|
|
1661+++8E6B T_OLD_3 EQU T_OLD_2+24
|
|
1662+++8E6B T_OLD_0 EQU T_OLD_3+2
|
|
1663+++8E6B T_NEW_0 EQU T_OLD_0
|
|
1664+++8E6B T_NEW_1 EQU T_OLD_1
|
|
1665+++8E6B T_NEW_2 EQU T_NEW_0+24
|
|
1666+++8E6B T_NEW_3 EQU T_OLD_3
|
|
1667+++8E6B
|
|
1668+++8E6B PT2EMPTYORN EQU VT_+31 ;1,0,0 sequence
|
|
1669+++8E6B
|
|
1670+++8E6B 00 NT_ DS 192 ;CreatedNoteTableAddress
|
|
1671+++8F2B
|
|
1672+++8F2B VAR0END EQU VT_+16 ;INIT zeroes from VARS to VAR0END-1
|
|
1673+++8F2B
|
|
1674+++8F2B VARSEND EQU $
|
|
1675+++8F2B MDLADDR EQU $
|
|
1676+++8F2B
|
|
1677+++8F2B DISPLAY "PTS player size=",$-START
|
|
1678+++8F2B
|
|
1679+++8F2B ;Release 0 steps:
|
|
1680+++8F2B ;04/21/2007
|
|
1681+++8F2B ;Works start (PTxPlay adaptation); first beta.
|
|
1682+++8F2B ;04/22/2007
|
|
1683+++8F2B ;Job finished; beta-testing.
|
|
1684+++8F2B ;04/23/2007
|
|
1685+++8F2B ;PT v3.7 TS mode corrected (after AlCo remarks).
|
|
1686+++8F2B ;04/29/2007
|
|
1687+++8F2B ;Added 1.XX and 2.XX special commands interpretation for PT3
|
|
1688+++8F2B ;modules of v3.7+.
|
|
1689+++8F2B
|
|
1690+++8F2B ;Size (minimal build for ZX Spectrum):
|
|
1691+++8F2B ;Code block #908 bytes
|
|
1692+++8F2B ;Variables #2BF bytes (can be stripped)
|
|
1693+++8F2B ;Total size #908+#2BF=#BC7 (3015) bytes
|
|
1694+++8F2B
|
|
1695+++8F2B ENDMOD
|
|
1696+++8F2B
|
|
1697+++8F2B endif
|
|
1698+++8F2B
|
|
0418++ 8F2B include "pt3.asm"
|
|
0001+++8F2B ifndef _pt3_asm_defined
|
|
0002+++8F2B define _pt3_asm_defined
|
|
0003+++8F2B
|
|
0004+++8F2B module PT3
|
|
0005+++8F2B
|
|
0006+++8F2B struct Header
|
|
0007+++8F2B~ Id ds 13 ; usually 'Protracker 3.'
|
|
0008+++8F2B~ Subversion
|
|
0009+++8F2B~ db 0
|
|
0010+++8F2B~ Description
|
|
0011+++8F2B~ ds 84 ; usually ' compilation of ' + Name[32] + ' by ' + Author[32]
|
|
0012+++8F2B~ Mode db 0
|
|
0013+++8F2B~ FreqTable
|
|
0014+++8F2B~ db 0 ;assume 0..04
|
|
0015+++8F2B~ Tempo db 0 ;01-ff
|
|
0016+++8F2B~ Length db 0
|
|
0017+++8F2B~ Loop db 0
|
|
0018+++8F2B~ Patterns
|
|
0019+++8F2B~ dw 0 ;? 00-01
|
|
0020+++8F2B~ Samples
|
|
0021+++8F2B~ ds 64 ;(? 00-bf}{32}
|
|
0022+++8F2B~ Ornaments
|
|
0023+++8F2B~ ds 32 ;(? 00-d9){16}
|
|
0024+++8F2B~ Positions
|
|
0025+++8F2B~ db 0 ;*3&00-fe
|
|
0026+++8F2B~ db 0 ;*3|ff
|
|
0027+++8F2B ends
|
|
0028+++8F2B
|
|
0029+++8F2B Start
|
|
0030+++8F2B ifndef NoPrologue
|
|
0031+++8F2B~ ld hl,End
|
|
0032+++8F2B~ jr Init
|
|
0033+++8F2B~ jp PTS.PLAY
|
|
0034+++8F2B~ jp PTS.MUTE
|
|
0035+++8F2B endif
|
|
0036+++8F2B
|
|
0037+++8F2B 3E 20 Init ld a,PTS.SETUP.TSPT3
|
|
0038+++8F2D C3 6C 83 jp PTS.INIT
|
|
0039+++8F30
|
|
0040+++8F30 ifdef HaveFormatCheck
|
|
0041+++8F30 include "format.asm"
|
|
0001+++8F30 ;some format checking macros
|
|
0002+++8F30 ifndef _format_asm_defined
|
|
0003+++8F30~ define _format_asm_defined
|
|
0004+++8F30~ 0005+++8F30~ macro LessOrEqual number
|
|
0006+++8F30~ ld a,number
|
|
0007+++8F30~ cp (hl)
|
|
0008+++8F30~ inc hl
|
|
0009+++8F30~ ret c
|
|
0010+++8F30~ endm
|
|
0011+++8F30~
|
|
0012+++8F30~ macro Greater number
|
|
0013+++8F30~ ld a,(hl)
|
|
0014+++8F30~ inc hl
|
|
0015+++8F30~ cp number
|
|
0016+++8F30~ ret c
|
|
0017+++8F30~ endm
|
|
0018+++8F30~
|
|
0019+++8F30~ macro AnyByte
|
|
0020+++8F30~ inc hl
|
|
0021+++8F30~ endm
|
|
0022+++8F30~
|
|
0023+++8F30~ macro AnyBytes count
|
|
0024+++8F30~ if count > 7
|
|
0025+++8F30~ ld a,l
|
|
0026+++8F30~ add a,count
|
|
0027+++8F30~ ld l,a
|
|
0028+++8F30~ adc a,h
|
|
0029+++8F30~ sub l
|
|
0030+++8F30~ ld h,a
|
|
0031+++8F30~ else
|
|
0032+++8F30~ dup count
|
|
0033+++8F30~ inc hl
|
|
0034+++8F30~ edup
|
|
0035+++8F30~ endif
|
|
0036+++8F30~ endm
|
|
0037+++8F30~
|
|
0038+++8F30~ macro EqualTo number
|
|
0039+++8F30~ ld a,number
|
|
0040+++8F30~ cp (hl)
|
|
0041+++8F30~ inc hl
|
|
0042+++8F30~ ret nz
|
|
0043+++8F30~ endm
|
|
0044+++8F30~ 0045+++8F30 endif
|
|
0046+++8F30
|
|
0042+++8F30
|
|
0043+++8F30 ;in HL - module addr
|
|
0044+++8F30 ;out Z - is pt3
|
|
0045+++8F30 CheckFormat
|
|
0046+++8F30 ; meta
|
|
0047+++8F30 AnyBytes Header.FreqTable
|
|
0047+++8F30 7D > ld a,l
|
|
0047+++8F31 C6 63 > add a,count
|
|
0047+++8F33 6F > ld l,a
|
|
0047+++8F34 8C > adc a,h
|
|
0047+++8F35 95 > sub l
|
|
0047+++8F36 67 > ld h,a
|
|
0048+++8F37 ;FreqTable
|
|
0049+++8F37 LessOrEqual 4
|
|
0049+++8F37 3E 04 > ld a,number
|
|
0049+++8F39 BE > cp (hl)
|
|
0049+++8F3A 23 > inc hl
|
|
0049+++8F3B D8 > ret c
|
|
0050+++8F3C ;Tempo
|
|
0051+++8F3C Greater 1
|
|
0051+++8F3C 7E > ld a,(hl)
|
|
0051+++8F3D 23 > inc hl
|
|
0051+++8F3E FE 01 > cp number
|
|
0051+++8F40 D8 > ret c
|
|
0052+++8F41 ;Length
|
|
0053+++8F41 AnyByte
|
|
0053+++8F41 23 > inc hl
|
|
0054+++8F42 ;Loop
|
|
0055+++8F42 AnyByte
|
|
0055+++8F42 23 > inc hl
|
|
0056+++8F43 ;Patterns
|
|
0057+++8F43 AnyByte
|
|
0057+++8F43 23 > inc hl
|
|
0058+++8F44 LessOrEqual 1
|
|
0058+++8F44 3E 01 > ld a,number
|
|
0058+++8F46 BE > cp (hl)
|
|
0058+++8F47 23 > inc hl
|
|
0058+++8F48 D8 > ret c
|
|
0059+++8F49 ;Samples
|
|
0060+++8F49 06 20 ld b,(Header.Ornaments-Header.Samples)/2
|
|
0061+++8F4B .samples
|
|
0062+++8F4B AnyByte
|
|
0062+++8F4B 23 > inc hl
|
|
0063+++8F4C LessOrEqual #bf
|
|
0063+++8F4C 3E BF > ld a,number
|
|
0063+++8F4E BE > cp (hl)
|
|
0063+++8F4F 23 > inc hl
|
|
0063+++8F50 D8 > ret c
|
|
0064+++8F51 10 F8 djnz .samples
|
|
0065+++8F53 ;Ornaments
|
|
0066+++8F53 06 10 ld b,(Header.Positions-Header.Ornaments)/2
|
|
0067+++8F55 .ornaments
|
|
0068+++8F55 AnyByte
|
|
0068+++8F55 23 > inc hl
|
|
0069+++8F56 LessOrEqual #d9
|
|
0069+++8F56 3E D9 > ld a,number
|
|
0069+++8F58 BE > cp (hl)
|
|
0069+++8F59 23 > inc hl
|
|
0069+++8F5A D8 > ret c
|
|
0070+++8F5B 10 F8 djnz .ornaments
|
|
0071+++8F5D ;Positions
|
|
0072+++8F5D ;255 at first position is denied
|
|
0073+++8F5D LessOrEqual 254
|
|
0073+++8F5D 3E FE > ld a,number
|
|
0073+++8F5F BE > cp (hl)
|
|
0073+++8F60 23 > inc hl
|
|
0073+++8F61 D8 > ret c
|
|
0074+++8F62 06 00 ld b,0
|
|
0075+++8F64 2B dec hl
|
|
0076+++8F65 .positions
|
|
0077+++8F65 7E ld a,(hl)
|
|
0078+++8F66 23 inc hl
|
|
0079+++8F67 FE FF cp 255
|
|
0080+++8F69 C8 ret z ;finish
|
|
0081+++8F6A ;check is multiple of 3
|
|
0082+++8F6A A7 .div3 and a
|
|
0083+++8F6B 28 05 jr z,.posok
|
|
0084+++8F6D D6 03 sub 3
|
|
0085+++8F6F D8 ret c
|
|
0086+++8F70 20 F8 jr nz,.div3
|
|
0087+++8F72 10 F1 .posok djnz .positions
|
|
0088+++8F74 ;fall through
|
|
0089+++8F74 7C .fail ld a,h
|
|
0090+++8F75 A7 and a ;reset Z
|
|
0091+++8F76 C9 ret
|
|
0092+++8F77
|
|
0093+++8F77 display "PT3 checker size: ",$-CheckFormat
|
|
0094+++8F77 endif
|
|
0095+++8F77
|
|
0096+++8F77 endmod
|
|
0097+++8F77
|
|
0098+++8F77 include "PTSPlay.asm"
|
|
0001+++8F77 ifndef _pts_asm_defined
|
|
0002+++8F77~ define _pts_asm_defined
|
|
0003+++8F77~ 0004+++8F77~ MODULE PTS
|
|
0005+++8F77~
|
|
0006+++8F77~ ;Universal PT2'n'PT3 Turbo Sound player for ZX Spectrum
|
|
0007+++8F77~ ;(c)2004-2007 S.V.Bulba <vorobey@mail.khstu.ru>
|
|
0008+++8F77~ ;Specially for AlCo
|
|
0009+++8F77~ ;http://bulba.untergrund.net/ (http://bulba.at.kz/)
|
|
0010+++8F77~ 0011+++8F77~ ;Release number
|
|
0012+++8F77~ Release EQU "0"
|
|
0013+++8F77~ 0014+++8F77~ ;Conditional assembly
|
|
0015+++8F77~ ;1) Current position counters at (Vars1+0) and (Vars2+0)
|
|
0016+++8F77~ CurPosCounter=0
|
|
0017+++8F77~ ;2) Allow channels allocation bits at (SETUP)
|
|
0018+++8F77~ ACBBAC=0
|
|
0019+++8F77~ ;3) Allow loop checking and disabling
|
|
0020+++8F77~ LoopChecker=0
|
|
0021+++8F77~ ;4) Insert official identificator
|
|
0022+++8F77~ Id=0
|
|
0023+++8F77~ ;5) Set IY for correct return to ZX Basic
|
|
0024+++8F77~ Basic=0
|
|
0025+++8F77~ 0026+++8F77~ ;Features
|
|
0027+++8F77~ ;--------
|
|
0028+++8F77~ ;-Can be compiled at any address (i.e. no need rounding ORG
|
|
0029+++8F77~ ; address).
|
|
0030+++8F77~ ;-Variables (VARS) can be located at any address (not only after
|
|
0031+++8F77~ ; code block).
|
|
0032+++8F77~ ;-INIT subprogram checks PT3-module version and rightly
|
|
0033+++8F77~ ; generates both note and volume tables outside of code block
|
|
0034+++8F77~ ; (in VARS).
|
|
0035+++8F77~ ;-Two portamento (spc. command 3xxx) algorithms (depending of
|
|
0036+++8F77~ ; PT3 module version).
|
|
0037+++8F77~ ;-New 1.XX and 2.XX special command behaviour (only for PT v3.7
|
|
0038+++8F77~ ; and higher).
|
|
0039+++8F77~ ;-Any Tempo value are accepted (including Tempo=1 and Tempo=2).
|
|
0040+++8F77~ ;-TS modes: 2xPT3, 2xPT2 and PT v3.7 TS standard.
|
|
0041+++8F77~ ;-Fully compatible with Ay_Emul PT3 and PT2 players codes.
|
|
0042+++8F77~ ;-See also notes at the end of this source code.
|
|
0043+++8F77~ 0044+++8F77~ ;Limitations
|
|
0045+++8F77~ ;-----------
|
|
0046+++8F77~ ;-Can run in RAM only (self-modified code is used).
|
|
0047+++8F77~ ;-PT2 position list must be end by #FF marker only.
|
|
0048+++8F77~ 0049+++8F77~ ;Warning!!! PLAY subprogram can crash if no module are loaded
|
|
0050+++8F77~ ;into RAM or INIT subprogram was not called before.
|
|
0051+++8F77~ 0052+++8F77~ ;Call MUTE or INIT one more time to mute sound after stopping
|
|
0053+++8F77~ ;playing
|
|
0054+++8F77~ 0055+++8F77~ TonA EQU 0
|
|
0056+++8F77~ TonB EQU 2
|
|
0057+++8F77~ TonC EQU 4
|
|
0058+++8F77~ Noise EQU 6
|
|
0059+++8F77~ Mixer EQU 7
|
|
0060+++8F77~ AmplA EQU 8
|
|
0061+++8F77~ AmplB EQU 9
|
|
0062+++8F77~ AmplC EQU 10
|
|
0063+++8F77~ Env EQU 11
|
|
0064+++8F77~ EnvTp EQU 13
|
|
0065+++8F77~ 0066+++8F77~ START
|
|
0067+++8F77~ 0068+++8F77~ SETUP.NOLOOP EQU 1
|
|
0069+++8F77~ SETUP.PT2 EQU 2
|
|
0070+++8F77~ SETUP.ACB EQU 4
|
|
0071+++8F77~ SETUP.BAC EQU 8
|
|
0072+++8F77~ SETUP.TS02 EQU 16
|
|
0073+++8F77~ SETUP.TSPT3 EQU 32
|
|
0074+++8F77~ 0075+++8F77~ SETUP DB 0 ;set bit0, if you want to play without looping
|
|
0076+++8F77~ ;(optional);
|
|
0077+++8F77~ ;set bit1 for PT2 and reset for PT3 before
|
|
0078+++8F77~ ;calling INIT;
|
|
0079+++8F77~ ;bits2-3: %00-ABC, %01-ACB, %10-BAC (optional);
|
|
0080+++8F77~ ;bits4-5: %00-no TS, %01-2 modules TS, %10-
|
|
0081+++8F77~ ;autodetect PT3 TS-format by AlCo (PT 3.7+);
|
|
0082+++8F77~ ;Remark: old PT3 TS-format by AlCo (PT 3.6) is not
|
|
0083+++8F77~ ;documented and must be converted to new standard.
|
|
0084+++8F77~ ;bit6 is set each time, when loop point of 2nd TS
|
|
0085+++8F77~ ;module is passed (optional).
|
|
0086+++8F77~ ;bit7 is set each time, when loop point of 1st TS
|
|
0087+++8F77~ ;or of single module is passed (optional).
|
|
0088+++8F77~ 0089+++8F77~ ;Identifier
|
|
0090+++8F77~ IF Id
|
|
0091+++8F77~ DB "=UniPT2/PT3/TS-Player r.",Release,"="
|
|
0092+++8F77~ ENDIF
|
|
0093+++8F77~ 0094+++8F77~ IF LoopChecker
|
|
0095+++8F77~ CHECKLP LD HL,SETUP
|
|
0096+++8F77~ BIT 0,(IY-100+VRS.ModNum)
|
|
0097+++8F77~ JR Z,CHL1
|
|
0098+++8F77~ SET 6,(HL)
|
|
0099+++8F77~ JR CHL2
|
|
0100+++8F77~ CHL1 SET 7,(HL)
|
|
0101+++8F77~ CHL2 BIT 0,(HL)
|
|
0102+++8F77~ RET Z
|
|
0103+++8F77~ POP HL
|
|
0104+++8F77~ INC (IY-100+VRS.DelyCnt)
|
|
0105+++8F77~ INC (IY-100+VRS.ChanA+CHP.NtSkCn)
|
|
0106+++8F77~ XOR A
|
|
0107+++8F77~ LD (IY-100+VRS.AYREGS+AmplA),A
|
|
0108+++8F77~ LD (IY-100+VRS.AYREGS+AmplB),A
|
|
0109+++8F77~ LD (IY-100+VRS.AYREGS+AmplC),A
|
|
0110+++8F77~ RET
|
|
0111+++8F77~ ENDIF
|
|
0112+++8F77~ 0113+++8F77~ MUTE XOR A
|
|
0114+++8F77~ LD H,A
|
|
0115+++8F77~ LD L,A
|
|
0116+++8F77~ LD (VARS1+VRS.AYREGS+AmplA),A
|
|
0117+++8F77~ LD (VARS1+VRS.AYREGS+AmplB),HL
|
|
0118+++8F77~ LD (VARS2+VRS.AYREGS+AmplA),A
|
|
0119+++8F77~ LD (VARS2+VRS.AYREGS+AmplB),HL
|
|
0120+++8F77~ JP ROUT
|
|
0121+++8F77~ 0122+++8F77~ INIT
|
|
0123+++8F77~ ;HL - AddressOfModule
|
|
0124+++8F77~ ;DE - AddresOf2ndModule
|
|
0125+++8F77~ ;A - mode
|
|
0126+++8F77~ PUSH DE
|
|
0127+++8F77~ PUSH HL
|
|
0128+++8F77~ LD HL,VARS
|
|
0129+++8F77~ LD (HL),0
|
|
0130+++8F77~ LD DE,VARS+1
|
|
0131+++8F77~ LD BC,VAR0END-VARS-1
|
|
0132+++8F77~ LDIR
|
|
0133+++8F77~ INC HL
|
|
0134+++8F77~ LD (VARS1+VRS.AdInPtA),HL ;ptr to zero
|
|
0135+++8F77~ LD (VARS2+VRS.AdInPtA),HL
|
|
0136+++8F77~ 0137+++8F77~ POP HL
|
|
0138+++8F77~ LD IY,VARS1+100
|
|
0139+++8F77~ LD (SETUP),A
|
|
0140+++8F77~ AND SETUP.PT2
|
|
0141+++8F77~ JP NZ,I_PT2
|
|
0142+++8F77~ 0143+++8F77~ CALL INITPT3
|
|
0144+++8F77~ LD HL,(e_-SamCnv-2)*256+#18
|
|
0145+++8F77~ LD (SamCnv),HL
|
|
0146+++8F77~ LD A,#BA
|
|
0147+++8F77~ LD (OrnCP),A
|
|
0148+++8F77~ LD (SamCP),A
|
|
0149+++8F77~ LD A,#7B
|
|
0150+++8F77~ LD (OrnLD),A
|
|
0151+++8F77~ LD (SamLD),A
|
|
0152+++8F77~ LD A,#87
|
|
0153+++8F77~ LD (SamClc2),A
|
|
0154+++8F77~ POP HL
|
|
0155+++8F77~ ;Use version and ton table of 1st module
|
|
0156+++8F77~ LD A,(IX+13-100) ;EXTRACT VERSION NUMBER
|
|
0157+++8F77~ SUB #30
|
|
0158+++8F77~ JR C,L20
|
|
0159+++8F77~ CP 10
|
|
0160+++8F77~ JR C,L21
|
|
0161+++8F77~ L20 LD A,6
|
|
0162+++8F77~ L21 LD (Version),A
|
|
0163+++8F77~ PUSH AF ;VolTable version
|
|
0164+++8F77~ CP 4
|
|
0165+++8F77~ LD A,(IX+99-100) ;TONE TABLE NUMBER
|
|
0166+++8F77~ RLA
|
|
0167+++8F77~ AND 7
|
|
0168+++8F77~ PUSH AF ;NoteTable number
|
|
0169+++8F77~ 0170+++8F77~ LD IY,VARS2+100
|
|
0171+++8F77~ LD A,(SETUP)
|
|
0172+++8F77~ AND SETUP.TS02|SETUP.TSPT3
|
|
0173+++8F77~ JR Z,NOTS
|
|
0174+++8F77~ CP SETUP.TS02
|
|
0175+++8F77~ JR Z,TwoPT3s
|
|
0176+++8F77~ LD A,(Version)
|
|
0177+++8F77~ CP 7
|
|
0178+++8F77~ JR C,NOTS
|
|
0179+++8F77~ LD A,(IX+98-100) ;ALCO TS MARKER
|
|
0180+++8F77~ CP #20
|
|
0181+++8F77~ JR Z,NOTS
|
|
0182+++8F77~ LD HL,VARS1
|
|
0183+++8F77~ LD DE,VARS2
|
|
0184+++8F77~ LD BC,VRS
|
|
0185+++8F77~ LDIR
|
|
0186+++8F77~ SET 1,(IY-100+VRS.ModNum)
|
|
0187+++8F77~ LD C,A
|
|
0188+++8F77~ ADD A,A
|
|
0189+++8F77~ ADD A,C
|
|
0190+++8F77~ SUB 2
|
|
0191+++8F77~ LD (TSSub),A
|
|
0192+++8F77~ JR AlCoTS_
|
|
0193+++8F77~ TwoPT3s CALL INITPT3
|
|
0194+++8F77~ AlCoTS_ LD A,1
|
|
0195+++8F77~ LD (is_ts),A
|
|
0196+++8F77~ SET 0,(IY-100+VRS.ModNum)
|
|
0197+++8F77~ 0198+++8F77~ NOTS LD BC,PT3PD
|
|
0199+++8F77~ LD HL,0
|
|
0200+++8F77~ LD DE,PT3EMPTYORN
|
|
0201+++8F77~ JR INITCOMMON
|
|
0202+++8F77~ 0203+++8F77~ I_PT2 CALL INITPT2
|
|
0204+++8F77~ LD HL,#51CB
|
|
0205+++8F77~ LD (SamCnv),HL
|
|
0206+++8F77~ LD A,#BB
|
|
0207+++8F77~ LD (OrnCP),A
|
|
0208+++8F77~ LD (SamCP),A
|
|
0209+++8F77~ LD A,#7A
|
|
0210+++8F77~ LD (OrnLD),A
|
|
0211+++8F77~ LD (SamLD),A
|
|
0212+++8F77~ LD A,#80
|
|
0213+++8F77~ LD (SamClc2),A
|
|
0214+++8F77~ POP HL
|
|
0215+++8F77~ LD A,5
|
|
0216+++8F77~ LD (Version),A
|
|
0217+++8F77~ PUSH AF
|
|
0218+++8F77~ LD A,2
|
|
0219+++8F77~ PUSH AF
|
|
0220+++8F77~ 0221+++8F77~ LD A,(SETUP)
|
|
0222+++8F77~ AND SETUP.TS02|SETUP.TSPT3
|
|
0223+++8F77~ JR Z,NOTS2
|
|
0224+++8F77~ 0225+++8F77~ LD IY,VARS2+100
|
|
0226+++8F77~ LD A,1
|
|
0227+++8F77~ LD (is_ts),A
|
|
0228+++8F77~ SET 0,(IY-100+VRS.ModNum)
|
|
0229+++8F77~ CALL INITPT2
|
|
0230+++8F77~ 0231+++8F77~ NOTS2 LD BC,PT2PD
|
|
0232+++8F77~ LD HL,#8687
|
|
0233+++8F77~ LD DE,PT2EMPTYORN
|
|
0234+++8F77~ 0235+++8F77~ INITCOMMON
|
|
0236+++8F77~ 0237+++8F77~ IF Basic
|
|
0238+++8F77~ LD IY,#5C3A
|
|
0239+++8F77~ ENDIF
|
|
0240+++8F77~ 0241+++8F77~ LD (PTDEC),BC
|
|
0242+++8F77~ LD (PsCalc),HL
|
|
0243+++8F77~ PUSH DE
|
|
0244+++8F77~ 0245+++8F77~ ;note table data depacker
|
|
0246+++8F77~ ;(c) Ivan Roshin
|
|
0247+++8F77~ LD DE,T_PACK
|
|
0248+++8F77~ LD BC,T1_+(2*49)-1
|
|
0249+++8F77~ TP_0 LD A,(DE)
|
|
0250+++8F77~ INC DE
|
|
0251+++8F77~ CP 15*2
|
|
0252+++8F77~ JR NC,TP_1
|
|
0253+++8F77~ LD H,A
|
|
0254+++8F77~ LD A,(DE)
|
|
0255+++8F77~ LD L,A
|
|
0256+++8F77~ INC DE
|
|
0257+++8F77~ JR TP_2
|
|
0258+++8F77~ TP_1 PUSH DE
|
|
0259+++8F77~ LD D,0
|
|
0260+++8F77~ LD E,A
|
|
0261+++8F77~ ADD HL,DE
|
|
0262+++8F77~ ADD HL,DE
|
|
0263+++8F77~ POP DE
|
|
0264+++8F77~ TP_2 LD A,H
|
|
0265+++8F77~ LD (BC),A
|
|
0266+++8F77~ DEC BC
|
|
0267+++8F77~ LD A,L
|
|
0268+++8F77~ LD (BC),A
|
|
0269+++8F77~ DEC BC
|
|
0270+++8F77~ SUB (#F8*2)&255
|
|
0271+++8F77~ JR NZ,TP_0
|
|
0272+++8F77~ 0273+++8F77~ INC A
|
|
0274+++8F77~ LD (VARS1+VRS.DelyCnt),A
|
|
0275+++8F77~ LD (VARS2+VRS.DelyCnt),A
|
|
0276+++8F77~ LD HL,#F001 ;H - CHP.Volume, L - CHP.NtSkCn
|
|
0277+++8F77~ LD (VARS1+VRS.ChanA+CHP.NtSkCn),HL
|
|
0278+++8F77~ LD (VARS1+VRS.ChanB+CHP.NtSkCn),HL
|
|
0279+++8F77~ LD (VARS1+VRS.ChanC+CHP.NtSkCn),HL
|
|
0280+++8F77~ LD (VARS2+VRS.ChanA+CHP.NtSkCn),HL
|
|
0281+++8F77~ LD (VARS2+VRS.ChanB+CHP.NtSkCn),HL
|
|
0282+++8F77~ LD (VARS2+VRS.ChanC+CHP.NtSkCn),HL
|
|
0283+++8F77~ POP HL
|
|
0284+++8F77~ LD (VARS1+VRS.ChanA+CHP.OrnPtr),HL
|
|
0285+++8F77~ LD (VARS1+VRS.ChanB+CHP.OrnPtr),HL
|
|
0286+++8F77~ LD (VARS1+VRS.ChanC+CHP.OrnPtr),HL
|
|
0287+++8F77~ LD (VARS2+VRS.ChanA+CHP.OrnPtr),HL
|
|
0288+++8F77~ LD (VARS2+VRS.ChanB+CHP.OrnPtr),HL
|
|
0289+++8F77~ LD (VARS2+VRS.ChanC+CHP.OrnPtr),HL
|
|
0290+++8F77~ 0291+++8F77~ POP AF
|
|
0292+++8F77~ 0293+++8F77~ ;NoteTableCreator (c) Ivan Roshin
|
|
0294+++8F77~ ;A - NoteTableNumber*2+VersionForNoteTable
|
|
0295+++8F77~ ;(xx1b - 3.xx..3.4r, xx0b - 3.4x..3.6x..VTII1.0)
|
|
0296+++8F77~ 0297+++8F77~ LD HL,NT_DATA
|
|
0298+++8F77~ LD D,0
|
|
0299+++8F77~ ADD A,A
|
|
0300+++8F77~ LD E,A
|
|
0301+++8F77~ ADD HL,DE
|
|
0302+++8F77~ LD E,(HL)
|
|
0303+++8F77~ INC HL
|
|
0304+++8F77~ SRL E
|
|
0305+++8F77~ SBC A,A
|
|
0306+++8F77~ AND #A7 ;#00 (NOP) or #A7 (AND A)
|
|
0307+++8F77~ LD (L3),A
|
|
0308+++8F77~ EX DE,HL
|
|
0309+++8F77~ LD BC,T1_
|
|
0310+++8F77~ ADD HL,BC
|
|
0311+++8F77~ 0312+++8F77~ LD A,(DE)
|
|
0313+++8F77~ ADD A,T_&255
|
|
0314+++8F77~ LD C,A
|
|
0315+++8F77~ ADC A,T_/256
|
|
0316+++8F77~ SUB C
|
|
0317+++8F77~ LD B,A
|
|
0318+++8F77~ PUSH BC
|
|
0319+++8F77~ LD DE,NT_
|
|
0320+++8F77~ PUSH DE
|
|
0321+++8F77~ 0322+++8F77~ LD B,12
|
|
0323+++8F77~ L1 PUSH BC
|
|
0324+++8F77~ LD C,(HL)
|
|
0325+++8F77~ INC HL
|
|
0326+++8F77~ PUSH HL
|
|
0327+++8F77~ LD B,(HL)
|
|
0328+++8F77~ 0329+++8F77~ PUSH DE
|
|
0330+++8F77~ EX DE,HL
|
|
0331+++8F77~ LD DE,23
|
|
0332+++8F77~ LD IXH,8
|
|
0333+++8F77~ 0334+++8F77~ L2 SRL B
|
|
0335+++8F77~ RR C
|
|
0336+++8F77~ L3 DB #19 ;AND A or NOP
|
|
0337+++8F77~ LD A,C
|
|
0338+++8F77~ ADC A,D ;=ADC 0
|
|
0339+++8F77~ LD (HL),A
|
|
0340+++8F77~ INC HL
|
|
0341+++8F77~ LD A,B
|
|
0342+++8F77~ ADC A,D
|
|
0343+++8F77~ LD (HL),A
|
|
0344+++8F77~ ADD HL,DE
|
|
0345+++8F77~ DEC IXH
|
|
0346+++8F77~ JR NZ,L2
|
|
0347+++8F77~ 0348+++8F77~ POP DE
|
|
0349+++8F77~ INC DE
|
|
0350+++8F77~ INC DE
|
|
0351+++8F77~ POP HL
|
|
0352+++8F77~ INC HL
|
|
0353+++8F77~ POP BC
|
|
0354+++8F77~ DJNZ L1
|
|
0355+++8F77~ 0356+++8F77~ POP HL
|
|
0357+++8F77~ POP DE
|
|
0358+++8F77~ 0359+++8F77~ LD A,E
|
|
0360+++8F77~ CP TCOLD_1&255
|
|
0361+++8F77~ JR NZ,CORR_1
|
|
0362+++8F77~ LD A,#FD
|
|
0363+++8F77~ LD (NT_+#2E),A
|
|
0364+++8F77~ 0365+++8F77~ CORR_1 LD A,(DE)
|
|
0366+++8F77~ AND A
|
|
0367+++8F77~ JR Z,TC_EXIT
|
|
0368+++8F77~ RRA
|
|
0369+++8F77~ PUSH AF
|
|
0370+++8F77~ ADD A,A
|
|
0371+++8F77~ LD C,A
|
|
0372+++8F77~ ADD HL,BC
|
|
0373+++8F77~ POP AF
|
|
0374+++8F77~ JR NC,CORR_2
|
|
0375+++8F77~ DEC (HL)
|
|
0376+++8F77~ DEC (HL)
|
|
0377+++8F77~ CORR_2 INC (HL)
|
|
0378+++8F77~ AND A
|
|
0379+++8F77~ SBC HL,BC
|
|
0380+++8F77~ INC DE
|
|
0381+++8F77~ JR CORR_1
|
|
0382+++8F77~ 0383+++8F77~ TC_EXIT
|
|
0384+++8F77~ 0385+++8F77~ POP AF
|
|
0386+++8F77~ 0387+++8F77~ ;VolTableCreator (c) Ivan Roshin
|
|
0388+++8F77~ ;A - VersionForVolumeTable (0..4 - 3.xx..3.4x;
|
|
0389+++8F77~ ;5.. - 2.x,3.5x..3.6x..VTII1.0)
|
|
0390+++8F77~ 0391+++8F77~ CP 5
|
|
0392+++8F77~ LD HL,#11
|
|
0393+++8F77~ LD D,H
|
|
0394+++8F77~ LD E,H
|
|
0395+++8F77~ LD A,#17
|
|
0396+++8F77~ JR NC,M1
|
|
0397+++8F77~ DEC L
|
|
0398+++8F77~ LD E,L
|
|
0399+++8F77~ XOR A
|
|
0400+++8F77~ M1 LD (M2),A
|
|
0401+++8F77~ 0402+++8F77~ LD IX,VT_+16
|
|
0403+++8F77~ 0404+++8F77~ LD C,#F
|
|
0405+++8F77~ INITV2 PUSH HL
|
|
0406+++8F77~ 0407+++8F77~ ADD HL,DE
|
|
0408+++8F77~ EX DE,HL
|
|
0409+++8F77~ SBC HL,HL
|
|
0410+++8F77~ 0411+++8F77~ LD B,#10
|
|
0412+++8F77~ INITV1 LD A,L
|
|
0413+++8F77~ M2 DB #7D
|
|
0414+++8F77~ LD A,H
|
|
0415+++8F77~ ADC A,0
|
|
0416+++8F77~ LD (IX),A
|
|
0417+++8F77~ INC IX
|
|
0418+++8F77~ ADD HL,DE
|
|
0419+++8F77~ DJNZ INITV1
|
|
0420+++8F77~ 0421+++8F77~ POP HL
|
|
0422+++8F77~ LD A,E
|
|
0423+++8F77~ CP #77
|
|
0424+++8F77~ JR NZ,M3
|
|
0425+++8F77~ INC E
|
|
0426+++8F77~ M3 DEC C
|
|
0427+++8F77~ JR NZ,INITV2
|
|
0428+++8F77~ 0429+++8F77~ JP ROUT
|
|
0430+++8F77~ 0431+++8F77~ INITPT3 CALL SETMDAD
|
|
0432+++8F77~ PUSH HL
|
|
0433+++8F77~ LD DE,100
|
|
0434+++8F77~ ADD HL,DE
|
|
0435+++8F77~ LD A,(HL)
|
|
0436+++8F77~ LD (IY-100+VRS.Delay),A
|
|
0437+++8F77~ PUSH HL
|
|
0438+++8F77~ POP IX
|
|
0439+++8F77~ ADD HL,DE
|
|
0440+++8F77~ CALL SETCPPT
|
|
0441+++8F77~ LD E,(IX+102-100)
|
|
0442+++8F77~ INC HL
|
|
0443+++8F77~ 0444+++8F77~ IF CurPosCounter
|
|
0445+++8F77~ LD (IY-100+VRS.PosSub),L
|
|
0446+++8F77~ ENDIF
|
|
0447+++8F77~ 0448+++8F77~ ADD HL,DE
|
|
0449+++8F77~ CALL SETLPPT
|
|
0450+++8F77~ POP DE
|
|
0451+++8F77~ LD L,(IX+103-100)
|
|
0452+++8F77~ LD H,(IX+104-100)
|
|
0453+++8F77~ ADD HL,DE
|
|
0454+++8F77~ CALL SETPTPT
|
|
0455+++8F77~ LD HL,169
|
|
0456+++8F77~ ADD HL,DE
|
|
0457+++8F77~ CALL SETORPT
|
|
0458+++8F77~ LD HL,105
|
|
0459+++8F77~ ADD HL,DE
|
|
0460+++8F77~ 0461+++8F77~ SETSMPT LD (IY-100+VRS.SamPtrs),L
|
|
0462+++8F77~ LD (IY-100+VRS.SamPtrs+1),H
|
|
0463+++8F77~ RET
|
|
0464+++8F77~ 0465+++8F77~ INITPT2 LD A,(HL)
|
|
0466+++8F77~ LD (IY-100+VRS.Delay),A
|
|
0467+++8F77~ PUSH HL
|
|
0468+++8F77~ PUSH HL
|
|
0469+++8F77~ PUSH HL
|
|
0470+++8F77~ INC HL
|
|
0471+++8F77~ INC HL
|
|
0472+++8F77~ LD A,(HL)
|
|
0473+++8F77~ INC HL
|
|
0474+++8F77~ CALL SETSMPT
|
|
0475+++8F77~ LD E,(HL)
|
|
0476+++8F77~ INC HL
|
|
0477+++8F77~ LD D,(HL)
|
|
0478+++8F77~ POP HL
|
|
0479+++8F77~ AND A
|
|
0480+++8F77~ SBC HL,DE
|
|
0481+++8F77~ CALL SETMDAD
|
|
0482+++8F77~ POP HL
|
|
0483+++8F77~ LD DE,67
|
|
0484+++8F77~ ADD HL,DE
|
|
0485+++8F77~ CALL SETORPT
|
|
0486+++8F77~ LD E,32
|
|
0487+++8F77~ ADD HL,DE
|
|
0488+++8F77~ LD C,(HL)
|
|
0489+++8F77~ INC HL
|
|
0490+++8F77~ LD B,(HL)
|
|
0491+++8F77~ LD E,30
|
|
0492+++8F77~ ADD HL,DE
|
|
0493+++8F77~ CALL SETCPPT
|
|
0494+++8F77~ LD E,A
|
|
0495+++8F77~ INC HL
|
|
0496+++8F77~ 0497+++8F77~ IF CurPosCounter
|
|
0498+++8F77~ LD (IY-100+VRS.PosSub),L
|
|
0499+++8F77~ ENDIF
|
|
0500+++8F77~ 0501+++8F77~ ADD HL,DE
|
|
0502+++8F77~ CALL SETLPPT
|
|
0503+++8F77~ POP HL
|
|
0504+++8F77~ ADD HL,BC
|
|
0505+++8F77~ 0506+++8F77~ SETPTPT LD (IY-100+VRS.PatsPtr),L
|
|
0507+++8F77~ LD (IY-100+VRS.PatsPtr+1),H
|
|
0508+++8F77~ RET
|
|
0509+++8F77~ 0510+++8F77~ SETMDAD LD (IY-100+VRS.MODADDR),L
|
|
0511+++8F77~ LD (IY-100+VRS.MODADDR+1),H
|
|
0512+++8F77~ RET
|
|
0513+++8F77~ 0514+++8F77~ SETORPT LD (IY-100+VRS.OrnPtrs),L
|
|
0515+++8F77~ LD (IY-100+VRS.OrnPtrs+1),H
|
|
0516+++8F77~ RET
|
|
0517+++8F77~ 0518+++8F77~ SETCPPT LD (IY-100+VRS.CrPsPtr),L
|
|
0519+++8F77~ LD (IY-100+VRS.CrPsPtr+1),H
|
|
0520+++8F77~ RET
|
|
0521+++8F77~ 0522+++8F77~ SETLPPT LD (IY-100+VRS.LPosPtr),L
|
|
0523+++8F77~ LD (IY-100+VRS.LPosPtr+1),H
|
|
0524+++8F77~ RET
|
|
0525+++8F77~ 0526+++8F77~ SETENBS LD (IY-100+VRS.EnvBase),L
|
|
0527+++8F77~ LD (IY-100+VRS.EnvBase+1),H
|
|
0528+++8F77~ RET
|
|
0529+++8F77~ 0530+++8F77~ SETESLD LD (IY-100+VRS.CurESld),L
|
|
0531+++8F77~ LD (IY-100+VRS.CurESld+1),H
|
|
0532+++8F77~ RET
|
|
0533+++8F77~ 0534+++8F77~ GETIX PUSH IY
|
|
0535+++8F77~ POP IX
|
|
0536+++8F77~ ADD IX,DE
|
|
0537+++8F77~ RET
|
|
0538+++8F77~ 0539+++8F77~ PTDECOD CALL GETIX
|
|
0540+++8F77~ PTDEC EQU $+1
|
|
0541+++8F77~ JP #C3C3
|
|
0542+++8F77~ 0543+++8F77~ ;PT2 pattern decoder
|
|
0544+++8F77~ PD2_SAM CALL SETSAM
|
|
0545+++8F77~ JR PD2_LOOP
|
|
0546+++8F77~ 0547+++8F77~ PD2_EOff LD (IX-12+CHP.Env_En),A
|
|
0548+++8F77~ JR PD2_LOOP
|
|
0549+++8F77~ 0550+++8F77~ PD2_ENV LD (IX-12+CHP.Env_En),16
|
|
0551+++8F77~ LD (IY-100+VRS.AYREGS+EnvTp),A
|
|
0552+++8F77~ LD A,(BC)
|
|
0553+++8F77~ INC BC
|
|
0554+++8F77~ LD L,A
|
|
0555+++8F77~ LD A,(BC)
|
|
0556+++8F77~ INC BC
|
|
0557+++8F77~ LD H,A
|
|
0558+++8F77~ CALL SETENBS
|
|
0559+++8F77~ JR PD2_LOOP
|
|
0560+++8F77~ 0561+++8F77~ PD2_ORN CALL SETORN
|
|
0562+++8F77~ JR PD2_LOOP
|
|
0563+++8F77~ 0564+++8F77~ PD2_SKIP INC A
|
|
0565+++8F77~ LD (IX-12+CHP.NNtSkp),A
|
|
0566+++8F77~ JR PD2_LOOP
|
|
0567+++8F77~ 0568+++8F77~ PD2_VOL RRCA
|
|
0569+++8F77~ RRCA
|
|
0570+++8F77~ RRCA
|
|
0571+++8F77~ RRCA
|
|
0572+++8F77~ LD (IX-12+CHP.Volume),A
|
|
0573+++8F77~ JR PD2_LOOP
|
|
0574+++8F77~ 0575+++8F77~ PD2_DEL CALL C_DELAY
|
|
0576+++8F77~ JR PD2_LOOP
|
|
0577+++8F77~ 0578+++8F77~ PD2_GLIS SET 2,(IX-12+CHP.Flags)
|
|
0579+++8F77~ INC A
|
|
0580+++8F77~ LD (IX-12+CHP.TnSlDl),A
|
|
0581+++8F77~ LD (IX-12+CHP.TSlCnt),A
|
|
0582+++8F77~ LD A,(BC)
|
|
0583+++8F77~ INC BC
|
|
0584+++8F77~ LD (IX-12+CHP.TSlStp),A
|
|
0585+++8F77~ ADD A,A
|
|
0586+++8F77~ SBC A,A
|
|
0587+++8F77~ LD (IX-12+CHP.TSlStp+1),A
|
|
0588+++8F77~ SCF
|
|
0589+++8F77~ JR PD2_LP2
|
|
0590+++8F77~ 0591+++8F77~ PT2PD AND A
|
|
0592+++8F77~ 0593+++8F77~ PD2_LP2 EX AF,AF'
|
|
0594+++8F77~ 0595+++8F77~ PD2_LOOP LD A,(BC)
|
|
0596+++8F77~ INC BC
|
|
0597+++8F77~ ADD A,#20
|
|
0598+++8F77~ JR Z,PD2_REL
|
|
0599+++8F77~ JR C,PD2_SAM
|
|
0600+++8F77~ ADD A,96
|
|
0601+++8F77~ JR C,PD2_NOTE
|
|
0602+++8F77~ INC A
|
|
0603+++8F77~ JR Z,PD2_EOff
|
|
0604+++8F77~ ADD A,15
|
|
0605+++8F77~ JP Z,PD_FIN
|
|
0606+++8F77~ JR C,PD2_ENV
|
|
0607+++8F77~ ADD A,#10
|
|
0608+++8F77~ JR C,PD2_ORN
|
|
0609+++8F77~ ADD A,#40
|
|
0610+++8F77~ JR C,PD2_SKIP
|
|
0611+++8F77~ ADD A,#10
|
|
0612+++8F77~ JR C,PD2_VOL
|
|
0613+++8F77~ INC A
|
|
0614+++8F77~ JR Z,PD2_DEL
|
|
0615+++8F77~ INC A
|
|
0616+++8F77~ JR Z,PD2_GLIS
|
|
0617+++8F77~ INC A
|
|
0618+++8F77~ JR Z,PD2_PORT
|
|
0619+++8F77~ INC A
|
|
0620+++8F77~ JR Z,PD2_STOP
|
|
0621+++8F77~ LD A,(BC)
|
|
0622+++8F77~ INC BC
|
|
0623+++8F77~ LD (IX-12+CHP.CrNsSl),A
|
|
0624+++8F77~ JR PD2_LOOP
|
|
0625+++8F77~ 0626+++8F77~ PD2_PORT RES 2,(IX-12+CHP.Flags)
|
|
0627+++8F77~ LD A,(BC)
|
|
0628+++8F77~ INC BC
|
|
0629+++8F77~ INC BC ;ignoring precalc delta to right sound
|
|
0630+++8F77~ INC BC
|
|
0631+++8F77~ SCF
|
|
0632+++8F77~ JR PD2_LP2
|
|
0633+++8F77~ 0634+++8F77~ PD2_STOP LD (IX-12+CHP.TSlCnt),A
|
|
0635+++8F77~ JR PD2_LOOP
|
|
0636+++8F77~ 0637+++8F77~ PD2_REL LD (IX-12+CHP.Flags),A
|
|
0638+++8F77~ JR PD2_EXIT
|
|
0639+++8F77~ 0640+++8F77~ PD2_NOTE LD L,A
|
|
0641+++8F77~ LD A,(IX-12+CHP.Note)
|
|
0642+++8F77~ LD (PrNote+1),A
|
|
0643+++8F77~ LD (IX-12+CHP.Note),L
|
|
0644+++8F77~ XOR A
|
|
0645+++8F77~ LD (IX-12+CHP.TSlCnt),A
|
|
0646+++8F77~ SET 0,(IX-12+CHP.Flags)
|
|
0647+++8F77~ EX AF,AF'
|
|
0648+++8F77~ JR NC,NOGLIS2
|
|
0649+++8F77~ BIT 2,(IX-12+CHP.Flags)
|
|
0650+++8F77~ JR NZ,NOPORT2
|
|
0651+++8F77~ LD (LoStep),A
|
|
0652+++8F77~ ADD A,A
|
|
0653+++8F77~ SBC A,A
|
|
0654+++8F77~ EX AF,AF'
|
|
0655+++8F77~ LD H,A
|
|
0656+++8F77~ LD L,A
|
|
0657+++8F77~ INC A
|
|
0658+++8F77~ CALL SETPORT
|
|
0659+++8F77~ NOPORT2 LD (IX-12+CHP.TSlCnt),1
|
|
0660+++8F77~ NOGLIS2 XOR A
|
|
0661+++8F77~ 0662+++8F77~ 0663+++8F77~ PD2_EXIT LD (IX-12+CHP.PsInSm),A
|
|
0664+++8F77~ LD (IX-12+CHP.PsInOr),A
|
|
0665+++8F77~ LD (IX-12+CHP.CrTnSl),A
|
|
0666+++8F77~ LD (IX-12+CHP.CrTnSl+1),A
|
|
0667+++8F77~ JP PD_FIN
|
|
0668+++8F77~ 0669+++8F77~ ;PT3 pattern decoder
|
|
0670+++8F77~ PD_OrSm LD (IX-12+CHP.Env_En),0
|
|
0671+++8F77~ CALL SETORN
|
|
0672+++8F77~ PD_SAM_ LD A,(BC)
|
|
0673+++8F77~ INC BC
|
|
0674+++8F77~ RRCA
|
|
0675+++8F77~ 0676+++8F77~ PD_SAM CALL SETSAM
|
|
0677+++8F77~ JR PD_LOOP
|
|
0678+++8F77~ 0679+++8F77~ PD_VOL RRCA
|
|
0680+++8F77~ RRCA
|
|
0681+++8F77~ RRCA
|
|
0682+++8F77~ RRCA
|
|
0683+++8F77~ LD (IX-12+CHP.Volume),A
|
|
0684+++8F77~ JR PD_LP2
|
|
0685+++8F77~
|
|
0686+++8F77~ PD_EOff LD (IX-12+CHP.Env_En),A
|
|
0687+++8F77~ LD (IX-12+CHP.PsInOr),A
|
|
0688+++8F77~ JR PD_LP2
|
|
0689+++8F77~ 0690+++8F77~ PD_SorE DEC A
|
|
0691+++8F77~ JR NZ,PD_ENV
|
|
0692+++8F77~ LD A,(BC)
|
|
0693+++8F77~ INC BC
|
|
0694+++8F77~ LD (IX-12+CHP.NNtSkp),A
|
|
0695+++8F77~ JR PD_LP2
|
|
0696+++8F77~ 0697+++8F77~ PD_ENV CALL SETENV
|
|
0698+++8F77~ JR PD_LP2
|
|
0699+++8F77~ 0700+++8F77~ PD_ORN CALL SETORN
|
|
0701+++8F77~ JR PD_LOOP
|
|
0702+++8F77~ 0703+++8F77~ PD_ESAM LD (IX-12+CHP.Env_En),A
|
|
0704+++8F77~ LD (IX-12+CHP.PsInOr),A
|
|
0705+++8F77~ CALL NZ,SETENV
|
|
0706+++8F77~ JR PD_SAM_
|
|
0707+++8F77~ 0708+++8F77~ PT3PD LD A,(IX-12+CHP.Note)
|
|
0709+++8F77~ LD (PrNote+1),A
|
|
0710+++8F77~ LD L,(IX-12+CHP.CrTnSl)
|
|
0711+++8F77~ LD H,(IX-12+CHP.CrTnSl+1)
|
|
0712+++8F77~ LD (PrSlide+1),HL
|
|
0713+++8F77~ 0714+++8F77~ PD_LOOP LD DE,#2010
|
|
0715+++8F77~ PD_LP2 LD A,(BC)
|
|
0716+++8F77~ INC BC
|
|
0717+++8F77~ ADD A,E
|
|
0718+++8F77~ JR C,PD_OrSm
|
|
0719+++8F77~ ADD A,D
|
|
0720+++8F77~ JR Z,PD_FIN
|
|
0721+++8F77~ JR C,PD_SAM
|
|
0722+++8F77~ ADD A,E
|
|
0723+++8F77~ JR Z,PD_REL
|
|
0724+++8F77~ JR C,PD_VOL
|
|
0725+++8F77~ ADD A,E
|
|
0726+++8F77~ JR Z,PD_EOff
|
|
0727+++8F77~ JR C,PD_SorE
|
|
0728+++8F77~ ADD A,96
|
|
0729+++8F77~ JR C,PD_NOTE
|
|
0730+++8F77~ ADD A,E
|
|
0731+++8F77~ JR C,PD_ORN
|
|
0732+++8F77~ ADD A,D
|
|
0733+++8F77~ JR C,PD_NOIS
|
|
0734+++8F77~ ADD A,E
|
|
0735+++8F77~ JR C,PD_ESAM
|
|
0736+++8F77~ ADD A,A
|
|
0737+++8F77~ LD E,A
|
|
0738+++8F77~ LD HL,(SPCCOMS+#FF20-#2000)&65535
|
|
0739+++8F77~ ADD HL,DE
|
|
0740+++8F77~ LD E,(HL)
|
|
0741+++8F77~ INC HL
|
|
0742+++8F77~ LD D,(HL)
|
|
0743+++8F77~ PUSH DE
|
|
0744+++8F77~ JR PD_LOOP
|
|
0745+++8F77~ 0746+++8F77~ PD_NOIS LD (IY-100+VRS.Ns_Base),A
|
|
0747+++8F77~ JR PD_LP2
|
|
0748+++8F77~ 0749+++8F77~ PD_REL RES 0,(IX-12+CHP.Flags)
|
|
0750+++8F77~ JR PD_RES
|
|
0751+++8F77~ 0752+++8F77~ PD_NOTE LD (IX-12+CHP.Note),A
|
|
0753+++8F77~ SET 0,(IX-12+CHP.Flags)
|
|
0754+++8F77~ XOR A
|
|
0755+++8F77~ 0756+++8F77~ PD_RES LD (PDSP_+1),SP
|
|
0757+++8F77~ LD SP,IX
|
|
0758+++8F77~ LD H,A
|
|
0759+++8F77~ LD L,A
|
|
0760+++8F77~ PUSH HL
|
|
0761+++8F77~ PUSH HL
|
|
0762+++8F77~ PUSH HL
|
|
0763+++8F77~ PUSH HL
|
|
0764+++8F77~ PUSH HL
|
|
0765+++8F77~ PUSH HL
|
|
0766+++8F77~ PDSP_ LD SP,#3131
|
|
0767+++8F77~ 0768+++8F77~ PD_FIN LD A,(IX-12+CHP.NNtSkp)
|
|
0769+++8F77~ LD (IX-12+CHP.NtSkCn),A
|
|
0770+++8F77~ RET
|
|
0771+++8F77~ 0772+++8F77~ C_PORTM LD A,(BC)
|
|
0773+++8F77~ INC BC
|
|
0774+++8F77~ ;SKIP PRECALCULATED TONE DELTA (BECAUSE
|
|
0775+++8F77~ ;CANNOT BE RIGHT AFTER PT3 COMPILATION)
|
|
0776+++8F77~ INC BC
|
|
0777+++8F77~ INC BC
|
|
0778+++8F77~ EX AF,AF'
|
|
0779+++8F77~ LD A,(BC) ;SIGNED TONE STEP
|
|
0780+++8F77~ INC BC
|
|
0781+++8F77~ LD (LoStep),A
|
|
0782+++8F77~ LD A,(BC)
|
|
0783+++8F77~ INC BC
|
|
0784+++8F77~ AND A
|
|
0785+++8F77~ EX AF,AF'
|
|
0786+++8F77~ LD L,(IX-12+CHP.CrTnSl)
|
|
0787+++8F77~ LD H,(IX-12+CHP.CrTnSl+1)
|
|
0788+++8F77~ 0789+++8F77~ ;Set portamento variables
|
|
0790+++8F77~ ;A - Delay; A' - Hi(Step); ZF' - (A'=0); HL - CrTnSl
|
|
0791+++8F77~ 0792+++8F77~ SETPORT RES 2,(IX-12+CHP.Flags)
|
|
0793+++8F77~ LD (IX-12+CHP.TnSlDl),A
|
|
0794+++8F77~ LD (IX-12+CHP.TSlCnt),A
|
|
0795+++8F77~ PUSH HL
|
|
0796+++8F77~ LD DE,NT_
|
|
0797+++8F77~ LD A,(IX-12+CHP.Note)
|
|
0798+++8F77~ LD (IX-12+CHP.SlToNt),A
|
|
0799+++8F77~ ADD A,A
|
|
0800+++8F77~ LD L,A
|
|
0801+++8F77~ LD H,0
|
|
0802+++8F77~ ADD HL,DE
|
|
0803+++8F77~ LD A,(HL)
|
|
0804+++8F77~ INC HL
|
|
0805+++8F77~ LD H,(HL)
|
|
0806+++8F77~ LD L,A
|
|
0807+++8F77~ PUSH HL
|
|
0808+++8F77~ PrNote LD A,#3E
|
|
0809+++8F77~ LD (IX-12+CHP.Note),A
|
|
0810+++8F77~ ADD A,A
|
|
0811+++8F77~ LD L,A
|
|
0812+++8F77~ LD H,0
|
|
0813+++8F77~ ADD HL,DE
|
|
0814+++8F77~ LD E,(HL)
|
|
0815+++8F77~ INC HL
|
|
0816+++8F77~ LD D,(HL)
|
|
0817+++8F77~ POP HL
|
|
0818+++8F77~ SBC HL,DE
|
|
0819+++8F77~ LD (IX-12+CHP.TnDelt),L
|
|
0820+++8F77~ LD (IX-12+CHP.TnDelt+1),H
|
|
0821+++8F77~ POP DE
|
|
0822+++8F77~ Version EQU $+1
|
|
0823+++8F77~ LD A,#3E
|
|
0824+++8F77~ CP 6
|
|
0825+++8F77~ JR C,OLDPRTM ;Old 3xxx for PT v3.5-
|
|
0826+++8F77~ PrSlide LD DE,#1111
|
|
0827+++8F77~ LD (IX-12+CHP.CrTnSl),E
|
|
0828+++8F77~ LD (IX-12+CHP.CrTnSl+1),D
|
|
0829+++8F77~ LoStep EQU $+1
|
|
0830+++8F77~ OLDPRTM LD A,#3E
|
|
0831+++8F77~ EX AF,AF'
|
|
0832+++8F77~ JR Z,NOSIG
|
|
0833+++8F77~ EX DE,HL
|
|
0834+++8F77~ NOSIG SBC HL,DE
|
|
0835+++8F77~ JP P,SET_STP
|
|
0836+++8F77~ CPL
|
|
0837+++8F77~ EX AF,AF'
|
|
0838+++8F77~ NEG
|
|
0839+++8F77~ EX AF,AF'
|
|
0840+++8F77~ SET_STP LD (IX-12+CHP.TSlStp+1),A
|
|
0841+++8F77~ EX AF,AF'
|
|
0842+++8F77~ LD (IX-12+CHP.TSlStp),A
|
|
0843+++8F77~ LD (IX-12+CHP.COnOff),0
|
|
0844+++8F77~ RET
|
|
0845+++8F77~ 0846+++8F77~ C_GLISS SET 2,(IX-12+CHP.Flags)
|
|
0847+++8F77~ LD A,(BC)
|
|
0848+++8F77~ INC BC
|
|
0849+++8F77~ LD (IX-12+CHP.TnSlDl),A
|
|
0850+++8F77~ AND A
|
|
0851+++8F77~ JR NZ,GL36
|
|
0852+++8F77~ LD A,(Version) ;AlCo PT3.7+
|
|
0853+++8F77~ CP 7
|
|
0854+++8F77~ SBC A,A
|
|
0855+++8F77~ INC A
|
|
0856+++8F77~ GL36 LD (IX-12+CHP.TSlCnt),A
|
|
0857+++8F77~ LD A,(BC)
|
|
0858+++8F77~ INC BC
|
|
0859+++8F77~ EX AF,AF'
|
|
0860+++8F77~ LD A,(BC)
|
|
0861+++8F77~ INC BC
|
|
0862+++8F77~ JR SET_STP
|
|
0863+++8F77~ 0864+++8F77~ C_SMPOS LD A,(BC)
|
|
0865+++8F77~ INC BC
|
|
0866+++8F77~ LD (IX-12+CHP.PsInSm),A
|
|
0867+++8F77~ RET
|
|
0868+++8F77~ 0869+++8F77~ C_ORPOS LD A,(BC)
|
|
0870+++8F77~ INC BC
|
|
0871+++8F77~ LD (IX-12+CHP.PsInOr),A
|
|
0872+++8F77~ RET
|
|
0873+++8F77~ 0874+++8F77~ C_VIBRT LD A,(BC)
|
|
0875+++8F77~ INC BC
|
|
0876+++8F77~ LD (IX-12+CHP.OnOffD),A
|
|
0877+++8F77~ LD (IX-12+CHP.COnOff),A
|
|
0878+++8F77~ LD A,(BC)
|
|
0879+++8F77~ INC BC
|
|
0880+++8F77~ LD (IX-12+CHP.OffOnD),A
|
|
0881+++8F77~ XOR A
|
|
0882+++8F77~ LD (IX-12+CHP.TSlCnt),A
|
|
0883+++8F77~ LD (IX-12+CHP.CrTnSl),A
|
|
0884+++8F77~ LD (IX-12+CHP.CrTnSl+1),A
|
|
0885+++8F77~ RET
|
|
0886+++8F77~ 0887+++8F77~ C_ENGLS LD A,(BC)
|
|
0888+++8F77~ INC BC
|
|
0889+++8F77~ LD (IY-100+VRS.Env_Del),A
|
|
0890+++8F77~ LD (IY-100+VRS.CurEDel),A
|
|
0891+++8F77~ LD A,(BC)
|
|
0892+++8F77~ INC BC
|
|
0893+++8F77~ LD L,A
|
|
0894+++8F77~ LD A,(BC)
|
|
0895+++8F77~ INC BC
|
|
0896+++8F77~ LD H,A
|
|
0897+++8F77~ LD (IY-100+VRS.ESldAdd),L
|
|
0898+++8F77~ LD (IY-100+VRS.ESldAdd+1),H
|
|
0899+++8F77~ RET
|
|
0900+++8F77~ 0901+++8F77~ C_DELAY LD A,(BC)
|
|
0902+++8F77~ INC BC
|
|
0903+++8F77~ LD (IY-100+VRS.Delay),A
|
|
0904+++8F77~ LD HL,VARS2+VRS.ModNum ;if AlCo_TS
|
|
0905+++8F77~ BIT 1,(HL)
|
|
0906+++8F77~ RET Z
|
|
0907+++8F77~ LD (VARS1+VRS.Delay),A
|
|
0908+++8F77~ LD (VARS1+VRS.DelyCnt),A
|
|
0909+++8F77~ LD (VARS2+VRS.Delay),A
|
|
0910+++8F77~ RET
|
|
0911+++8F77~
|
|
0912+++8F77~ SETENV LD (IX-12+CHP.Env_En),E
|
|
0913+++8F77~ LD (IY-100+VRS.AYREGS+EnvTp),A
|
|
0914+++8F77~ LD A,(BC)
|
|
0915+++8F77~ INC BC
|
|
0916+++8F77~ LD H,A
|
|
0917+++8F77~ LD A,(BC)
|
|
0918+++8F77~ INC BC
|
|
0919+++8F77~ LD L,A
|
|
0920+++8F77~ CALL SETENBS
|
|
0921+++8F77~ XOR A
|
|
0922+++8F77~ LD (IX-12+CHP.PsInOr),A
|
|
0923+++8F77~ LD (IY-100+VRS.CurEDel),A
|
|
0924+++8F77~ LD H,A
|
|
0925+++8F77~ LD L,A
|
|
0926+++8F77~ JP SETESLD
|
|
0927+++8F77~ 0928+++8F77~ SETORN ADD A,A
|
|
0929+++8F77~ LD E,A
|
|
0930+++8F77~ LD D,0
|
|
0931+++8F77~ LD (IX-12+CHP.PsInOr),D
|
|
0932+++8F77~ LD L,(IY-100+VRS.OrnPtrs)
|
|
0933+++8F77~ LD H,(IY-100+VRS.OrnPtrs+1)
|
|
0934+++8F77~ ADD HL,DE
|
|
0935+++8F77~ LD E,(HL)
|
|
0936+++8F77~ INC HL
|
|
0937+++8F77~ LD D,(HL)
|
|
0938+++8F77~ LD L,(IY-100+VRS.MODADDR)
|
|
0939+++8F77~ LD H,(IY-100+VRS.MODADDR+1)
|
|
0940+++8F77~ ADD HL,DE
|
|
0941+++8F77~ LD (IX-12+CHP.OrnPtr),L
|
|
0942+++8F77~ LD (IX-12+CHP.OrnPtr+1),H
|
|
0943+++8F77~ C_NOP RET
|
|
0944+++8F77~ 0945+++8F77~ SETSAM ADD A,A
|
|
0946+++8F77~ LD E,A
|
|
0947+++8F77~ LD D,0
|
|
0948+++8F77~ LD L,(IY-100+VRS.SamPtrs);
|
|
0949+++8F77~ LD H,(IY-100+VRS.SamPtrs+1);
|
|
0950+++8F77~ ADD HL,DE
|
|
0951+++8F77~ LD E,(HL)
|
|
0952+++8F77~ INC HL
|
|
0953+++8F77~ LD D,(HL)
|
|
0954+++8F77~ LD L,(IY-100+VRS.MODADDR)
|
|
0955+++8F77~ LD H,(IY-100+VRS.MODADDR+1)
|
|
0956+++8F77~ ADD HL,DE
|
|
0957+++8F77~ LD (IX-12+CHP.SamPtr),L
|
|
0958+++8F77~ LD (IX-12+CHP.SamPtr+1),H
|
|
0959+++8F77~ RET
|
|
0960+++8F77~ 0961+++8F77~ ;ALL 16 ADDRESSES TO PROTECT FROM BROKEN PT3 MODULES
|
|
0962+++8F77~ SPCCOMS DW C_NOP
|
|
0963+++8F77~ DW C_GLISS
|
|
0964+++8F77~ DW C_PORTM
|
|
0965+++8F77~ DW C_SMPOS
|
|
0966+++8F77~ DW C_ORPOS
|
|
0967+++8F77~ DW C_VIBRT
|
|
0968+++8F77~ DW C_NOP
|
|
0969+++8F77~ DW C_NOP
|
|
0970+++8F77~ DW C_ENGLS
|
|
0971+++8F77~ DW C_DELAY
|
|
0972+++8F77~ DW C_NOP
|
|
0973+++8F77~ DW C_NOP
|
|
0974+++8F77~ DW C_NOP
|
|
0975+++8F77~ DW C_NOP
|
|
0976+++8F77~ DW C_NOP
|
|
0977+++8F77~ DW C_NOP
|
|
0978+++8F77~ 0979+++8F77~ CHREGS CALL GETIX
|
|
0980+++8F77~ XOR A
|
|
0981+++8F77~ LD (Ampl),A
|
|
0982+++8F77~ BIT 0,(IX+CHP.Flags)
|
|
0983+++8F77~ PUSH HL
|
|
0984+++8F77~ JP Z,CH_EXIT
|
|
0985+++8F77~ LD (CSP_+1),SP
|
|
0986+++8F77~ LD L,(IX+CHP.OrnPtr)
|
|
0987+++8F77~ LD H,(IX+CHP.OrnPtr+1)
|
|
0988+++8F77~ LD SP,HL
|
|
0989+++8F77~ POP DE
|
|
0990+++8F77~ LD H,A
|
|
0991+++8F77~ LD A,(IX+CHP.PsInOr)
|
|
0992+++8F77~ LD L,A
|
|
0993+++8F77~ ADD HL,SP
|
|
0994+++8F77~ INC A
|
|
0995+++8F77~ ;PT2 PT3
|
|
0996+++8F77~ OrnCP INC A ;CP E CP D
|
|
0997+++8F77~ JR C,CH_ORPS
|
|
0998+++8F77~ OrnLD DB 1 ;LD A,D LD A,E
|
|
0999+++8F77~ CH_ORPS LD (IX+CHP.PsInOr),A
|
|
1000+++8F77~ LD A,(IX+CHP.Note)
|
|
1001+++8F77~ ADD A,(HL)
|
|
1002+++8F77~ JP P,CH_NTP
|
|
1003+++8F77~ XOR A
|
|
1004+++8F77~ CH_NTP CP 96
|
|
1005+++8F77~ JR C,CH_NOK
|
|
1006+++8F77~ LD A,95
|
|
1007+++8F77~ CH_NOK ADD A,A
|
|
1008+++8F77~ EX AF,AF'
|
|
1009+++8F77~ LD L,(IX+CHP.SamPtr)
|
|
1010+++8F77~ LD H,(IX+CHP.SamPtr+1)
|
|
1011+++8F77~ LD SP,HL
|
|
1012+++8F77~ POP DE
|
|
1013+++8F77~ LD H,0
|
|
1014+++8F77~ LD A,(IX+CHP.PsInSm)
|
|
1015+++8F77~ LD B,A
|
|
1016+++8F77~ ADD A,A
|
|
1017+++8F77~ SamClc2 ADD A,A ;or ADD A,B for PT2
|
|
1018+++8F77~ LD L,A
|
|
1019+++8F77~ ADD HL,SP
|
|
1020+++8F77~ LD SP,HL
|
|
1021+++8F77~ LD A,B
|
|
1022+++8F77~ INC A
|
|
1023+++8F77~ ;PT2 PT3
|
|
1024+++8F77~ SamCP INC A ;CP E CP D
|
|
1025+++8F77~ JR C,CH_SMPS
|
|
1026+++8F77~ SamLD DB 1 ;LD A,D LD A,E
|
|
1027+++8F77~ CH_SMPS LD (IX+CHP.PsInSm),A
|
|
1028+++8F77~ POP BC
|
|
1029+++8F77~ POP HL
|
|
1030+++8F77~ 1031+++8F77~ ;Convert PT2 sample to PT3
|
|
1032+++8F77~ ;PT2 PT3
|
|
1033+++8F77~ SamCnv POP HL ;BIT 2,C JR e_
|
|
1034+++8F77~ POP HL
|
|
1035+++8F77~ LD H,B
|
|
1036+++8F77~ JR NZ,$+8
|
|
1037+++8F77~ EX DE,HL
|
|
1038+++8F77~ AND A
|
|
1039+++8F77~ SBC HL,HL
|
|
1040+++8F77~ SBC HL,DE
|
|
1041+++8F77~ LD D,C
|
|
1042+++8F77~ RR C
|
|
1043+++8F77~ SBC A,A
|
|
1044+++8F77~ CPL
|
|
1045+++8F77~ AND #3E
|
|
1046+++8F77~ RR C
|
|
1047+++8F77~ RR B
|
|
1048+++8F77~ AND C
|
|
1049+++8F77~ LD C,A
|
|
1050+++8F77~ LD A,B
|
|
1051+++8F77~ RRA
|
|
1052+++8F77~ RRA
|
|
1053+++8F77~ RR D
|
|
1054+++8F77~ RRA
|
|
1055+++8F77~ AND #9F
|
|
1056+++8F77~ LD B,A
|
|
1057+++8F77~ 1058+++8F77~ e_ LD E,(IX+CHP.TnAcc)
|
|
1059+++8F77~ LD D,(IX+CHP.TnAcc+1)
|
|
1060+++8F77~ ADD HL,DE
|
|
1061+++8F77~ BIT 6,B
|
|
1062+++8F77~ JR Z,CH_NOAC
|
|
1063+++8F77~ LD (IX+CHP.TnAcc),L
|
|
1064+++8F77~ LD (IX+CHP.TnAcc+1),H
|
|
1065+++8F77~ CH_NOAC EX DE,HL
|
|
1066+++8F77~ EX AF,AF'
|
|
1067+++8F77~ ADD A,NT_&255
|
|
1068+++8F77~ LD L,A
|
|
1069+++8F77~ ADC A,NT_/256
|
|
1070+++8F77~ SUB L
|
|
1071+++8F77~ LD H,A
|
|
1072+++8F77~ LD SP,HL
|
|
1073+++8F77~ POP HL
|
|
1074+++8F77~ ADD HL,DE
|
|
1075+++8F77~ LD E,(IX+CHP.CrTnSl)
|
|
1076+++8F77~ LD D,(IX+CHP.CrTnSl+1)
|
|
1077+++8F77~ ADD HL,DE
|
|
1078+++8F77~ CSP_ LD SP,#3131
|
|
1079+++8F77~ EX (SP),HL
|
|
1080+++8F77~ XOR A
|
|
1081+++8F77~ OR (IX+CHP.TSlCnt)
|
|
1082+++8F77~ JR Z,CH_AMP
|
|
1083+++8F77~ DEC (IX+CHP.TSlCnt)
|
|
1084+++8F77~ JR NZ,CH_AMP
|
|
1085+++8F77~ LD A,(IX+CHP.TnSlDl)
|
|
1086+++8F77~ LD (IX+CHP.TSlCnt),A
|
|
1087+++8F77~ LD L,(IX+CHP.TSlStp)
|
|
1088+++8F77~ LD H,(IX+CHP.TSlStp+1)
|
|
1089+++8F77~ LD A,H
|
|
1090+++8F77~ ADD HL,DE
|
|
1091+++8F77~ LD (IX+CHP.CrTnSl),L
|
|
1092+++8F77~ LD (IX+CHP.CrTnSl+1),H
|
|
1093+++8F77~ BIT 2,(IX+CHP.Flags)
|
|
1094+++8F77~ JR NZ,CH_AMP
|
|
1095+++8F77~ LD E,(IX+CHP.TnDelt)
|
|
1096+++8F77~ LD D,(IX+CHP.TnDelt+1)
|
|
1097+++8F77~ AND A
|
|
1098+++8F77~ JR Z,CH_STPP
|
|
1099+++8F77~ EX DE,HL
|
|
1100+++8F77~ CH_STPP SBC HL,DE
|
|
1101+++8F77~ JP M,CH_AMP
|
|
1102+++8F77~ LD A,(IX+CHP.SlToNt)
|
|
1103+++8F77~ LD (IX+CHP.Note),A
|
|
1104+++8F77~ XOR A
|
|
1105+++8F77~ LD (IX+CHP.TSlCnt),A
|
|
1106+++8F77~ LD (IX+CHP.CrTnSl),A
|
|
1107+++8F77~ LD (IX+CHP.CrTnSl+1),A
|
|
1108+++8F77~ CH_AMP LD A,(IX+CHP.CrAmSl)
|
|
1109+++8F77~ BIT 7,C
|
|
1110+++8F77~ JR Z,CH_NOAM
|
|
1111+++8F77~ BIT 6,C
|
|
1112+++8F77~ JR Z,CH_AMIN
|
|
1113+++8F77~ CP 15
|
|
1114+++8F77~ JR Z,CH_NOAM
|
|
1115+++8F77~ INC A
|
|
1116+++8F77~ JR CH_SVAM
|
|
1117+++8F77~ CH_AMIN CP -15
|
|
1118+++8F77~ JR Z,CH_NOAM
|
|
1119+++8F77~ DEC A
|
|
1120+++8F77~ CH_SVAM LD (IX+CHP.CrAmSl),A
|
|
1121+++8F77~ CH_NOAM LD L,A
|
|
1122+++8F77~ LD A,B
|
|
1123+++8F77~ AND 15
|
|
1124+++8F77~ ADD A,L
|
|
1125+++8F77~ JP P,CH_APOS
|
|
1126+++8F77~ XOR A
|
|
1127+++8F77~ CH_APOS CP 16
|
|
1128+++8F77~ JR C,CH_VOL
|
|
1129+++8F77~ LD A,15
|
|
1130+++8F77~ CH_VOL OR (IX+CHP.Volume)
|
|
1131+++8F77~ ADD A,VT_&255
|
|
1132+++8F77~ LD L,A
|
|
1133+++8F77~ ADC A,VT_/256
|
|
1134+++8F77~ SUB L
|
|
1135+++8F77~ LD H,A
|
|
1136+++8F77~ LD A,(HL)
|
|
1137+++8F77~ CH_ENV BIT 0,C
|
|
1138+++8F77~ JR NZ,CH_NOEN
|
|
1139+++8F77~ OR (IX+CHP.Env_En)
|
|
1140+++8F77~ CH_NOEN LD (Ampl),A
|
|
1141+++8F77~ BIT 7,B
|
|
1142+++8F77~ LD A,C
|
|
1143+++8F77~ JR Z,NO_ENSL
|
|
1144+++8F77~ RLA
|
|
1145+++8F77~ RLA
|
|
1146+++8F77~ SRA A
|
|
1147+++8F77~ SRA A
|
|
1148+++8F77~ SRA A
|
|
1149+++8F77~ ADD A,(IX+CHP.CrEnSl) ;SEE COMMENT BELOW
|
|
1150+++8F77~ BIT 5,B
|
|
1151+++8F77~ JR Z,NO_ENAC
|
|
1152+++8F77~ LD (IX+CHP.CrEnSl),A
|
|
1153+++8F77~ NO_ENAC ADD A,(IY-100+VRS.AddToEn) ;BUG IN PT3 - NEED WORD HERE
|
|
1154+++8F77~ LD (IY-100+VRS.AddToEn),A
|
|
1155+++8F77~ JR CH_MIX
|
|
1156+++8F77~ NO_ENSL RRA
|
|
1157+++8F77~ ADD A,(IX+CHP.CrNsSl)
|
|
1158+++8F77~ LD (IY-100+VRS.AddToNs),A
|
|
1159+++8F77~ BIT 5,B
|
|
1160+++8F77~ JR Z,CH_MIX
|
|
1161+++8F77~ LD (IX+CHP.CrNsSl),A
|
|
1162+++8F77~ CH_MIX LD A,B
|
|
1163+++8F77~ RRA
|
|
1164+++8F77~ AND #48
|
|
1165+++8F77~ CH_EXIT OR (IY-100+VRS.AYREGS+Mixer)
|
|
1166+++8F77~ RRCA
|
|
1167+++8F77~ LD (IY-100+VRS.AYREGS+Mixer),A
|
|
1168+++8F77~ POP HL
|
|
1169+++8F77~ XOR A
|
|
1170+++8F77~ OR (IX+CHP.COnOff)
|
|
1171+++8F77~ RET Z
|
|
1172+++8F77~ DEC (IX+CHP.COnOff)
|
|
1173+++8F77~ RET NZ
|
|
1174+++8F77~ XOR (IX+CHP.Flags)
|
|
1175+++8F77~ LD (IX+CHP.Flags),A
|
|
1176+++8F77~ RRA
|
|
1177+++8F77~ LD A,(IX+CHP.OnOffD)
|
|
1178+++8F77~ JR C,CH_ONDL
|
|
1179+++8F77~ LD A,(IX+CHP.OffOnD)
|
|
1180+++8F77~ CH_ONDL LD (IX+CHP.COnOff),A
|
|
1181+++8F77~ RET
|
|
1182+++8F77~ 1183+++8F77~ PLAY_ XOR A
|
|
1184+++8F77~ LD (IY-100+VRS.AddToEn),A
|
|
1185+++8F77~ LD (IY-100+VRS.AYREGS+Mixer),A
|
|
1186+++8F77~ DEC A
|
|
1187+++8F77~ LD (IY-100+VRS.AYREGS+EnvTp),A
|
|
1188+++8F77~ DEC (IY-100+VRS.DelyCnt)
|
|
1189+++8F77~ JP NZ,PL2
|
|
1190+++8F77~ DEC (IY-100+VRS.ChanA+CHP.NtSkCn)
|
|
1191+++8F77~ JR NZ,PL1B
|
|
1192+++8F77~ LD C,(IY-100+VRS.AdInPtA)
|
|
1193+++8F77~ LD B,(IY-100+VRS.AdInPtA+1)
|
|
1194+++8F77~ LD A,(BC)
|
|
1195+++8F77~ AND A
|
|
1196+++8F77~ JR NZ,PL1A
|
|
1197+++8F77~ LD D,A
|
|
1198+++8F77~ LD (IY-100+VRS.Ns_Base),A
|
|
1199+++8F77~ LD L,(IY-100+VRS.CrPsPtr)
|
|
1200+++8F77~ LD H,(IY-100+VRS.CrPsPtr+1)
|
|
1201+++8F77~ INC HL
|
|
1202+++8F77~ LD A,(HL)
|
|
1203+++8F77~ INC A
|
|
1204+++8F77~ JR NZ,PLNLP
|
|
1205+++8F77~ 1206+++8F77~ IF LoopChecker
|
|
1207+++8F77~ CALL CHECKLP
|
|
1208+++8F77~ ENDIF
|
|
1209+++8F77~ 1210+++8F77~ LD L,(IY-100+VRS.LPosPtr)
|
|
1211+++8F77~ LD H,(IY-100+VRS.LPosPtr+1)
|
|
1212+++8F77~ LD A,(HL)
|
|
1213+++8F77~ INC A
|
|
1214+++8F77~ PLNLP CALL SETCPPT
|
|
1215+++8F77~ DEC A
|
|
1216+++8F77~ BIT 1,(IY-100+VRS.ModNum)
|
|
1217+++8F77~ JR Z,NoAlCo
|
|
1218+++8F77~ TSSub EQU $+1
|
|
1219+++8F77~ SUB #D6
|
|
1220+++8F77~ CPL
|
|
1221+++8F77~ NoAlCo
|
|
1222+++8F77~ ;PT2 PT3
|
|
1223+++8F77~ PsCalc DEC A ;ADD A,A NOP
|
|
1224+++8F77~ DEC A ;ADD A,(HL) NOP
|
|
1225+++8F77~ ADD A,A
|
|
1226+++8F77~ LD E,A
|
|
1227+++8F77~ RL D
|
|
1228+++8F77~ 1229+++8F77~ IF CurPosCounter
|
|
1230+++8F77~ LD A,L
|
|
1231+++8F77~ SUB (IY-100+VRS.PosSub)
|
|
1232+++8F77~ LD (IY-100+VRS.CurPos),A
|
|
1233+++8F77~ ENDIF
|
|
1234+++8F77~ 1235+++8F77~ LD L,(IY-100+VRS.PatsPtr)
|
|
1236+++8F77~ LD H,(IY-100+VRS.PatsPtr+1)
|
|
1237+++8F77~ ADD HL,DE
|
|
1238+++8F77~ LD E,(IY-100+VRS.MODADDR)
|
|
1239+++8F77~ LD D,(IY-100+VRS.MODADDR+1)
|
|
1240+++8F77~ LD (PSP_+1),SP
|
|
1241+++8F77~ LD SP,HL
|
|
1242+++8F77~ POP HL
|
|
1243+++8F77~ ADD HL,DE
|
|
1244+++8F77~ LD B,H
|
|
1245+++8F77~ LD C,L
|
|
1246+++8F77~ POP HL
|
|
1247+++8F77~ ADD HL,DE
|
|
1248+++8F77~ LD (IY-100+VRS.AdInPtB),L
|
|
1249+++8F77~ LD (IY-100+VRS.AdInPtB+1),H
|
|
1250+++8F77~ POP HL
|
|
1251+++8F77~ ADD HL,DE
|
|
1252+++8F77~ LD (IY-100+VRS.AdInPtC),L
|
|
1253+++8F77~ LD (IY-100+VRS.AdInPtC+1),H
|
|
1254+++8F77~ PSP_ LD SP,#3131
|
|
1255+++8F77~ PL1A LD DE,VRS.ChanA+12-100
|
|
1256+++8F77~ CALL PTDECOD
|
|
1257+++8F77~ LD (IY-100+VRS.AdInPtA),C
|
|
1258+++8F77~ LD (IY-100+VRS.AdInPtA+1),B
|
|
1259+++8F77~ 1260+++8F77~ PL1B DEC (IY-100+VRS.ChanB+CHP.NtSkCn)
|
|
1261+++8F77~ JR NZ,PL1C
|
|
1262+++8F77~ LD DE,VRS.ChanB+12-100
|
|
1263+++8F77~ LD C,(IY-100+VRS.AdInPtB)
|
|
1264+++8F77~ LD B,(IY-100+VRS.AdInPtB+1)
|
|
1265+++8F77~ CALL PTDECOD
|
|
1266+++8F77~ LD (IY-100+VRS.AdInPtB),C
|
|
1267+++8F77~ LD (IY-100+VRS.AdInPtB+1),B
|
|
1268+++8F77~ 1269+++8F77~ PL1C DEC (IY-100+VRS.ChanC+CHP.NtSkCn)
|
|
1270+++8F77~ JR NZ,PL1D
|
|
1271+++8F77~ LD DE,VRS.ChanC+12-100
|
|
1272+++8F77~ LD C,(IY-100+VRS.AdInPtC)
|
|
1273+++8F77~ LD B,(IY-100+VRS.AdInPtC+1)
|
|
1274+++8F77~ CALL PTDECOD
|
|
1275+++8F77~ LD (IY-100+VRS.AdInPtC),C
|
|
1276+++8F77~ LD (IY-100+VRS.AdInPtC+1),B
|
|
1277+++8F77~ 1278+++8F77~ PL1D LD A,(IY-100+VRS.Delay)
|
|
1279+++8F77~ LD (IY-100+VRS.DelyCnt),A
|
|
1280+++8F77~ 1281+++8F77~ PL2 LD DE,VRS.ChanA-100
|
|
1282+++8F77~ LD L,(IY-100+VRS.AYREGS+TonA)
|
|
1283+++8F77~ LD H,(IY-100+VRS.AYREGS+TonA+1)
|
|
1284+++8F77~ CALL CHREGS
|
|
1285+++8F77~ LD (IY-100+VRS.AYREGS+TonA),L
|
|
1286+++8F77~ LD (IY-100+VRS.AYREGS+TonA+1),H
|
|
1287+++8F77~ Ampl EQU $+1
|
|
1288+++8F77~ LD A,#3E
|
|
1289+++8F77~ LD (IY-100+VRS.AYREGS+AmplA),A
|
|
1290+++8F77~ LD DE,VRS.ChanB-100
|
|
1291+++8F77~ LD L,(IY-100+VRS.AYREGS+TonB)
|
|
1292+++8F77~ LD H,(IY-100+VRS.AYREGS+TonB+1)
|
|
1293+++8F77~ CALL CHREGS
|
|
1294+++8F77~ LD (IY-100+VRS.AYREGS+TonB),L
|
|
1295+++8F77~ LD (IY-100+VRS.AYREGS+TonB+1),H
|
|
1296+++8F77~ LD A,(Ampl)
|
|
1297+++8F77~ LD (IY-100+VRS.AYREGS+AmplB),A
|
|
1298+++8F77~ LD DE,VRS.ChanC-100
|
|
1299+++8F77~ LD L,(IY-100+VRS.AYREGS+TonC)
|
|
1300+++8F77~ LD H,(IY-100+VRS.AYREGS+TonC+1)
|
|
1301+++8F77~ CALL CHREGS
|
|
1302+++8F77~ LD (IY-100+VRS.AYREGS+TonC),L
|
|
1303+++8F77~ LD (IY-100+VRS.AYREGS+TonC+1),H
|
|
1304+++8F77~ LD A,(Ampl)
|
|
1305+++8F77~ LD (IY-100+VRS.AYREGS+AmplC),A
|
|
1306+++8F77~ 1307+++8F77~ LD A,(IY-100+VRS.Ns_Base)
|
|
1308+++8F77~ ADD (IY-100+VRS.AddToNs)
|
|
1309+++8F77~ LD (IY-100+VRS.AYREGS+Noise),A
|
|
1310+++8F77~ 1311+++8F77~ LD A,(IY-100+VRS.AddToEn)
|
|
1312+++8F77~ LD E,A
|
|
1313+++8F77~ ADD A,A
|
|
1314+++8F77~ SBC A,A
|
|
1315+++8F77~ LD D,A
|
|
1316+++8F77~ LD L,(IY-100+VRS.EnvBase)
|
|
1317+++8F77~ LD H,(IY-100+VRS.EnvBase+1)
|
|
1318+++8F77~ ADD HL,DE
|
|
1319+++8F77~ LD E,(IY-100+VRS.CurESld)
|
|
1320+++8F77~ LD D,(IY-100+VRS.CurESld+1)
|
|
1321+++8F77~ ADD HL,DE
|
|
1322+++8F77~ LD (IY-100+VRS.AYREGS+Env),L
|
|
1323+++8F77~ LD (IY-100+VRS.AYREGS+Env+1),H
|
|
1324+++8F77~ 1325+++8F77~ XOR A
|
|
1326+++8F77~ OR (IY-100+VRS.CurEDel)
|
|
1327+++8F77~ RET Z
|
|
1328+++8F77~ DEC (IY-100+VRS.CurEDel)
|
|
1329+++8F77~ RET NZ
|
|
1330+++8F77~ LD A,(IY-100+VRS.Env_Del)
|
|
1331+++8F77~ LD (IY-100+VRS.CurEDel),A
|
|
1332+++8F77~ LD L,(IY-100+VRS.ESldAdd)
|
|
1333+++8F77~ LD H,(IY-100+VRS.ESldAdd+1)
|
|
1334+++8F77~ ADD HL,DE
|
|
1335+++8F77~ JP SETESLD
|
|
1336+++8F77~ 1337+++8F77~ PLAY LD IY,VARS1+100
|
|
1338+++8F77~ CALL PLAY_
|
|
1339+++8F77~ LD A,(is_ts)
|
|
1340+++8F77~ AND A
|
|
1341+++8F77~ JR Z,PL_nts
|
|
1342+++8F77~ LD IY,VARS2+100
|
|
1343+++8F77~ CALL PLAY_
|
|
1344+++8F77~ PL_nts
|
|
1345+++8F77~ IF Basic
|
|
1346+++8F77~ LD IY,#5C3A
|
|
1347+++8F77~ ENDIF
|
|
1348+++8F77~ 1349+++8F77~ ROUT LD BC,#FFFD
|
|
1350+++8F77~ LD A,(is_ts)
|
|
1351+++8F77~ AND A
|
|
1352+++8F77~ IFDEF ONtfm
|
|
1353+++8F77~ LD L,#F9
|
|
1354+++8F77~ OUT (C),L
|
|
1355+++8F77~ ELSE
|
|
1356+++8F77~ JR Z,r_nts ;keep old standard
|
|
1357+++8F77~ OUT (C),B
|
|
1358+++8F77~ ENDIF
|
|
1359+++8F77~ r_nts EX AF,AF'
|
|
1360+++8F77~ 1361+++8F77~ IF ACBBAC
|
|
1362+++8F77~ LD IX,VARS1+VRS.AYREGS
|
|
1363+++8F77~ ELSE
|
|
1364+++8F77~ LD HL,VARS1+VRS.AYREGS
|
|
1365+++8F77~ ENDIF
|
|
1366+++8F77~ 1367+++8F77~ CALL ROUT_
|
|
1368+++8F77~ EX AF,AF'
|
|
1369+++8F77~ RET Z
|
|
1370+++8F77~ LD B,D
|
|
1371+++8F77~ 1372+++8F77~ IFDEF ONtfm
|
|
1373+++8F77~ LD A,#F8
|
|
1374+++8F77~ ELSE
|
|
1375+++8F77~ CPL
|
|
1376+++8F77~ ENDIF
|
|
1377+++8F77~ OUT (C),A
|
|
1378+++8F77~ 1379+++8F77~ IF ACBBAC
|
|
1380+++8F77~ LD IX,VARS2+VRS.AYREGS
|
|
1381+++8F77~ ELSE
|
|
1382+++8F77~ LD HL,VARS2+VRS.AYREGS
|
|
1383+++8F77~ ENDIF
|
|
1384+++8F77~ 1385+++8F77~ ROUT_
|
|
1386+++8F77~ IF ACBBAC
|
|
1387+++8F77~ LD A,(SETUP)
|
|
1388+++8F77~ AND 12
|
|
1389+++8F77~ JR Z,ABC
|
|
1390+++8F77~ ADD A,CHTABLE
|
|
1391+++8F77~ LD E,A
|
|
1392+++8F77~ ADC A,CHTABLE/256
|
|
1393+++8F77~ SUB E
|
|
1394+++8F77~ LD D,A
|
|
1395+++8F77~ LD B,0
|
|
1396+++8F77~ PUSH IX
|
|
1397+++8F77~ POP HL
|
|
1398+++8F77~ LD A,(DE)
|
|
1399+++8F77~ INC DE
|
|
1400+++8F77~ LD C,A
|
|
1401+++8F77~ ADD HL,BC
|
|
1402+++8F77~ LD A,(IX+TonB)
|
|
1403+++8F77~ LD C,(HL)
|
|
1404+++8F77~ LD (IX+TonB),C
|
|
1405+++8F77~ LD (HL),A
|
|
1406+++8F77~ INC HL
|
|
1407+++8F77~ LD A,(IX+TonB+1)
|
|
1408+++8F77~ LD C,(HL)
|
|
1409+++8F77~ LD (IX+TonB+1),C
|
|
1410+++8F77~ LD (HL),A
|
|
1411+++8F77~ LD A,(DE)
|
|
1412+++8F77~ INC DE
|
|
1413+++8F77~ LD C,A
|
|
1414+++8F77~ ADD HL,BC
|
|
1415+++8F77~ LD A,(IX+AmplB)
|
|
1416+++8F77~ LD C,(HL)
|
|
1417+++8F77~ LD (IX+AmplB),C
|
|
1418+++8F77~ LD (HL),A
|
|
1419+++8F77~ LD A,(DE)
|
|
1420+++8F77~ INC DE
|
|
1421+++8F77~ LD (RxCA1),A
|
|
1422+++8F77~ XOR 8
|
|
1423+++8F77~ LD (RxCA2),A
|
|
1424+++8F77~ LD A,(DE)
|
|
1425+++8F77~ AND (IX+Mixer)
|
|
1426+++8F77~ LD E,A
|
|
1427+++8F77~ LD A,(IX+Mixer)
|
|
1428+++8F77~ RxCA1 DB #E6
|
|
1429+++8F77~ AND %010010
|
|
1430+++8F77~ OR E
|
|
1431+++8F77~ LD E,A
|
|
1432+++8F77~ LD A,(IX+Mixer)
|
|
1433+++8F77~ AND %010010
|
|
1434+++8F77~ RxCA2 OR E
|
|
1435+++8F77~ OR E
|
|
1436+++8F77~ LD (IX+Mixer),A
|
|
1437+++8F77~ ABC
|
|
1438+++8F77~ ENDIF
|
|
1439+++8F77~ 1440+++8F77~ XOR A
|
|
1441+++8F77~ LD DE,#FFBF
|
|
1442+++8F77~ 1443+++8F77~ IF ACBBAC
|
|
1444+++8F77~ LD BC,#FFFD
|
|
1445+++8F77~ PUSH IX
|
|
1446+++8F77~ POP HL
|
|
1447+++8F77~ ENDIF
|
|
1448+++8F77~ 1449+++8F77~ LOUT
|
|
1450+++8F77~ IFDEF ONtfm
|
|
1451+++8F77~ INF
|
|
1452+++8F77~ JP M,$-2
|
|
1453+++8F77~ ENDIF
|
|
1454+++8F77~ OUT (C),A
|
|
1455+++8F77~ IFDEF ONtfm
|
|
1456+++8F77~ INF
|
|
1457+++8F77~ JP M,$-2
|
|
1458+++8F77~ ENDIF
|
|
1459+++8F77~ LD B,E
|
|
1460+++8F77~ OUTI
|
|
1461+++8F77~ LD B,D
|
|
1462+++8F77~ INC A
|
|
1463+++8F77~ CP 13
|
|
1464+++8F77~ JR NZ,LOUT
|
|
1465+++8F77~ IFDEF ONtfm
|
|
1466+++8F77~ INF
|
|
1467+++8F77~ JP M,$-2
|
|
1468+++8F77~ ENDIF
|
|
1469+++8F77~ OUT (C),A
|
|
1470+++8F77~ LD A,(HL)
|
|
1471+++8F77~ AND A
|
|
1472+++8F77~ RET M
|
|
1473+++8F77~ IFDEF ONtfm
|
|
1474+++8F77~ INF
|
|
1475+++8F77~ JP M,$-2
|
|
1476+++8F77~ ENDIF
|
|
1477+++8F77~ LD B,E
|
|
1478+++8F77~ OUT (C),A
|
|
1479+++8F77~ RET
|
|
1480+++8F77~ 1481+++8F77~ IF ACBBAC
|
|
1482+++8F77~ CHTABLE EQU $-4
|
|
1483+++8F77~ DB 4,5,15,%001001,0,7,7,%100100
|
|
1484+++8F77~ ENDIF
|
|
1485+++8F77~ 1486+++8F77~ NT_DATA DB (T_NEW_0-T1_)*2
|
|
1487+++8F77~ DB TCNEW_0-T_
|
|
1488+++8F77~ DB (T_OLD_0-T1_)*2+1
|
|
1489+++8F77~ DB TCOLD_0-T_
|
|
1490+++8F77~ DB (T_NEW_1-T1_)*2+1
|
|
1491+++8F77~ DB TCNEW_1-T_
|
|
1492+++8F77~ DB (T_OLD_1-T1_)*2+1
|
|
1493+++8F77~ DB TCOLD_1-T_
|
|
1494+++8F77~ DB (T_NEW_2-T1_)*2
|
|
1495+++8F77~ DB TCNEW_2-T_
|
|
1496+++8F77~ DB (T_OLD_2-T1_)*2
|
|
1497+++8F77~ DB TCOLD_2-T_
|
|
1498+++8F77~ DB (T_NEW_3-T1_)*2
|
|
1499+++8F77~ DB TCNEW_3-T_
|
|
1500+++8F77~ DB (T_OLD_3-T1_)*2
|
|
1501+++8F77~ DB TCOLD_3-T_
|
|
1502+++8F77~ 1503+++8F77~ T_
|
|
1504+++8F77~ 1505+++8F77~ TCOLD_0 DB #00+1,#04+1,#08+1,#0A+1,#0C+1,#0E+1,#12+1,#14+1
|
|
1506+++8F77~ DB #18+1,#24+1,#3C+1,0
|
|
1507+++8F77~ TCOLD_1 DB #5C+1,0
|
|
1508+++8F77~ TCOLD_2 DB #30+1,#36+1,#4C+1,#52+1,#5E+1,#70+1,#82,#8C,#9C
|
|
1509+++8F77~ DB #9E,#A0,#A6,#A8,#AA,#AC,#AE,#AE,0
|
|
1510+++8F77~ TCNEW_3 DB #56+1
|
|
1511+++8F77~ TCOLD_3 DB #1E+1,#22+1,#24+1,#28+1,#2C+1,#2E+1,#32+1,#BE+1,0
|
|
1512+++8F77~ TCNEW_0 DB #1C+1,#20+1,#22+1,#26+1,#2A+1,#2C+1,#30+1,#54+1
|
|
1513+++8F77~ DB #BC+1,#BE+1,0
|
|
1514+++8F77~ TCNEW_1 EQU TCOLD_1
|
|
1515+++8F77~ TCNEW_2 DB #1A+1,#20+1,#24+1,#28+1,#2A+1,#3A+1,#4C+1,#5E+1
|
|
1516+++8F77~ DB #BA+1,#BC+1,#BE+1,0
|
|
1517+++8F77~ 1518+++8F77~ PT3EMPTYORN EQU $-1
|
|
1519+++8F77~ DB 1,0
|
|
1520+++8F77~ 1521+++8F77~ ;first 12 values of tone tables (packed)
|
|
1522+++8F77~ 1523+++8F77~ T_PACK DB #06EC*2/256,#06EC*2&255
|
|
1524+++8F77~ DB #0755-#06EC
|
|
1525+++8F77~ DB #07C5-#0755
|
|
1526+++8F77~ DB #083B-#07C5
|
|
1527+++8F77~ DB #08B8-#083B
|
|
1528+++8F77~ DB #093D-#08B8
|
|
1529+++8F77~ DB #09CA-#093D
|
|
1530+++8F77~ DB #0A5F-#09CA
|
|
1531+++8F77~ DB #0AFC-#0A5F
|
|
1532+++8F77~ DB #0BA4-#0AFC
|
|
1533+++8F77~ DB #0C55-#0BA4
|
|
1534+++8F77~ DB #0D10-#0C55
|
|
1535+++8F77~ DB #066D*2/256,#066D*2&255
|
|
1536+++8F77~ DB #06CF-#066D
|
|
1537+++8F77~ DB #0737-#06CF
|
|
1538+++8F77~ DB #07A4-#0737
|
|
1539+++8F77~ DB #0819-#07A4
|
|
1540+++8F77~ DB #0894-#0819
|
|
1541+++8F77~ DB #0917-#0894
|
|
1542+++8F77~ DB #09A1-#0917
|
|
1543+++8F77~ DB #0A33-#09A1
|
|
1544+++8F77~ DB #0ACF-#0A33
|
|
1545+++8F77~ DB #0B73-#0ACF
|
|
1546+++8F77~ DB #0C22-#0B73
|
|
1547+++8F77~ DB #0CDA-#0C22
|
|
1548+++8F77~ DB #0704*2/256,#0704*2&255
|
|
1549+++8F77~ DB #076E-#0704
|
|
1550+++8F77~ DB #07E0-#076E
|
|
1551+++8F77~ DB #0858-#07E0
|
|
1552+++8F77~ DB #08D6-#0858
|
|
1553+++8F77~ DB #095C-#08D6
|
|
1554+++8F77~ DB #09EC-#095C
|
|
1555+++8F77~ DB #0A82-#09EC
|
|
1556+++8F77~ DB #0B22-#0A82
|
|
1557+++8F77~ DB #0BCC-#0B22
|
|
1558+++8F77~ DB #0C80-#0BCC
|
|
1559+++8F77~ DB #0D3E-#0C80
|
|
1560+++8F77~ DB #07E0*2/256,#07E0*2&255
|
|
1561+++8F77~ DB #0858-#07E0
|
|
1562+++8F77~ DB #08E0-#0858
|
|
1563+++8F77~ DB #0960-#08E0
|
|
1564+++8F77~ DB #09F0-#0960
|
|
1565+++8F77~ DB #0A88-#09F0
|
|
1566+++8F77~ DB #0B28-#0A88
|
|
1567+++8F77~ DB #0BD8-#0B28
|
|
1568+++8F77~ DB #0C80-#0BD8
|
|
1569+++8F77~ DB #0D60-#0C80
|
|
1570+++8F77~ DB #0E10-#0D60
|
|
1571+++8F77~ DB #0EF8-#0E10
|
|
1572+++8F77~ 1573+++8F77~ ;vars from here can be stripped
|
|
1574+++8F77~ ;you can move VARS to any other address
|
|
1575+++8F77~ 1576+++8F77~ VARS
|
|
1577+++8F77~ 1578+++8F77~ is_ts DB 0
|
|
1579+++8F77~ 1580+++8F77~ ;ChannelsVars
|
|
1581+++8F77~ STRUCT CHP
|
|
1582+++8F77~ ;reset group
|
|
1583+++8F77~ PsInOr DB 0
|
|
1584+++8F77~ PsInSm DB 0
|
|
1585+++8F77~ CrAmSl DB 0
|
|
1586+++8F77~ CrNsSl DB 0
|
|
1587+++8F77~ CrEnSl DB 0
|
|
1588+++8F77~ TSlCnt DB 0
|
|
1589+++8F77~ CrTnSl DW 0
|
|
1590+++8F77~ TnAcc DW 0
|
|
1591+++8F77~ COnOff DB 0
|
|
1592+++8F77~ ;reset group
|
|
1593+++8F77~ 1594+++8F77~ OnOffD DB 0
|
|
1595+++8F77~ 1596+++8F77~ ;IX for PTDECOD here (+12)
|
|
1597+++8F77~ OffOnD DB 0
|
|
1598+++8F77~ OrnPtr DW 0
|
|
1599+++8F77~ SamPtr DW 0
|
|
1600+++8F77~ NNtSkp DB 0
|
|
1601+++8F77~ Note DB 0
|
|
1602+++8F77~ SlToNt DB 0
|
|
1603+++8F77~ Env_En DB 0
|
|
1604+++8F77~ Flags DB 0
|
|
1605+++8F77~ ;Enabled - 0, SimpleGliss - 2
|
|
1606+++8F77~ TnSlDl DB 0
|
|
1607+++8F77~ TSlStp DW 0
|
|
1608+++8F77~ TnDelt DW 0
|
|
1609+++8F77~ NtSkCn DB 0
|
|
1610+++8F77~ Volume DB 0
|
|
1611+++8F77~ ENDS
|
|
1612+++8F77~ 1613+++8F77~ STRUCT VRS
|
|
1614+++8F77~ 1615+++8F77~ ;IF not works in STRUCT in SjASM :(
|
|
1616+++8F77~ ; IF CurPosCounter
|
|
1617+++8F77~ CurPos DB 0
|
|
1618+++8F77~ PosSub DB 0
|
|
1619+++8F77~ ; ENDIF
|
|
1620+++8F77~ 1621+++8F77~ ModNum DB 0 ;bit0: ChipNum
|
|
1622+++8F77~ ;bit1: 1-reversed patterns order (AlCo TS)
|
|
1623+++8F77~ 1624+++8F77~ ChanA DS CHP
|
|
1625+++8F77~ ChanB DS CHP
|
|
1626+++8F77~ ChanC DS CHP
|
|
1627+++8F77~ 1628+++8F77~ ;GlobalVars
|
|
1629+++8F77~ MODADDR DW 0
|
|
1630+++8F77~ OrnPtrs DW 0
|
|
1631+++8F77~ SamPtrs DW 0
|
|
1632+++8F77~ PatsPtr DW 0
|
|
1633+++8F77~ AdInPtA DW 0
|
|
1634+++8F77~ AdInPtB DW 0
|
|
1635+++8F77~ AdInPtC DW 0
|
|
1636+++8F77~ CrPsPtr DW 0
|
|
1637+++8F77~ LPosPtr DW 0
|
|
1638+++8F77~ Delay DB 0
|
|
1639+++8F77~ DelyCnt DB 0
|
|
1640+++8F77~ ESldAdd DW 0
|
|
1641+++8F77~ CurESld DW 0
|
|
1642+++8F77~ Env_Del DB 0
|
|
1643+++8F77~ CurEDel DB 0
|
|
1644+++8F77~ Ns_Base DB 0
|
|
1645+++8F77~ AddToNs DB 0
|
|
1646+++8F77~ AddToEn DB 0
|
|
1647+++8F77~ EnvBase DW 0
|
|
1648+++8F77~ AYREGS DS 14
|
|
1649+++8F77~ ENDS
|
|
1650+++8F77~ 1651+++8F77~ VARS1 DS VRS
|
|
1652+++8F77~ VARS2 DS VRS
|
|
1653+++8F77~ 1654+++8F77~ VT_ EQU $-16
|
|
1655+++8F77~ DS 256-16 ;CreatedVolumeTableAddress
|
|
1656+++8F77~ 1657+++8F77~ T1_ EQU VT_+16 ;Tone tables data depacked here
|
|
1658+++8F77~ 1659+++8F77~ T_OLD_1 EQU T1_
|
|
1660+++8F77~ T_OLD_2 EQU T_OLD_1+24
|
|
1661+++8F77~ T_OLD_3 EQU T_OLD_2+24
|
|
1662+++8F77~ T_OLD_0 EQU T_OLD_3+2
|
|
1663+++8F77~ T_NEW_0 EQU T_OLD_0
|
|
1664+++8F77~ T_NEW_1 EQU T_OLD_1
|
|
1665+++8F77~ T_NEW_2 EQU T_NEW_0+24
|
|
1666+++8F77~ T_NEW_3 EQU T_OLD_3
|
|
1667+++8F77~ 1668+++8F77~ PT2EMPTYORN EQU VT_+31 ;1,0,0 sequence
|
|
1669+++8F77~ 1670+++8F77~ NT_ DS 192 ;CreatedNoteTableAddress
|
|
1671+++8F77~ 1672+++8F77~ VAR0END EQU VT_+16 ;INIT zeroes from VARS to VAR0END-1
|
|
1673+++8F77~ 1674+++8F77~ VARSEND EQU $
|
|
1675+++8F77~ MDLADDR EQU $
|
|
1676+++8F77~ 1677+++8F77~ DISPLAY "PTS player size=",$-START
|
|
1678+++8F77~ 1679+++8F77~ ;Release 0 steps:
|
|
1680+++8F77~ ;04/21/2007
|
|
1681+++8F77~ ;Works start (PTxPlay adaptation); first beta.
|
|
1682+++8F77~ ;04/22/2007
|
|
1683+++8F77~ ;Job finished; beta-testing.
|
|
1684+++8F77~ ;04/23/2007
|
|
1685+++8F77~ ;PT v3.7 TS mode corrected (after AlCo remarks).
|
|
1686+++8F77~ ;04/29/2007
|
|
1687+++8F77~ ;Added 1.XX and 2.XX special commands interpretation for PT3
|
|
1688+++8F77~ ;modules of v3.7+.
|
|
1689+++8F77~ 1690+++8F77~ ;Size (minimal build for ZX Spectrum):
|
|
1691+++8F77~ ;Code block #908 bytes
|
|
1692+++8F77~ ;Variables #2BF bytes (can be stripped)
|
|
1693+++8F77~ ;Total size #908+#2BF=#BC7 (3015) bytes
|
|
1694+++8F77~ 1695+++8F77~ ENDMOD
|
|
1696+++8F77~ 1697+++8F77 endif
|
|
1698+++8F77
|
|
0099+++8F77 PT3.Play=PTS.PLAY
|
|
0100+++8F77 PT3.Mute=PTS.MUTE
|
|
0101+++8F77 PT3.End
|
|
0102+++8F77
|
|
0103+++8F77 display "PT3 module size: ",PT3.End-PT3.Start
|
|
0104+++8F77
|
|
0105+++8F77 endif
|
|
0106+++8F77
|
|
0419++ 8F77 include "pt2.asm"
|
|
0001+++8F77 ifndef _pt2_asm_defined
|
|
0002+++8F77 define _pt2_asm_defined
|
|
0003+++8F77
|
|
0004+++8F77 module PT2
|
|
0005+++8F77
|
|
0006+++8F77 struct Header
|
|
0007+++8F77~ Tempo db 0 ;02-ff
|
|
0008+++8F77~ Length db 0 ;01-ff
|
|
0009+++8F77~ Loop db 0 ;00-fe
|
|
0010+++8F77~ Samples
|
|
0011+++8F77~ ds 64 ;(? 00-36){32}
|
|
0012+++8F77~ Ornaments
|
|
0013+++8F77~ ds 32 ;(? 00-36){16}
|
|
0014+++8F77~ Patterns
|
|
0015+++8F77~ dw 0 ;? 00-01
|
|
0016+++8F77~ Name ds 30 ;?
|
|
0017+++8F77~ Positions
|
|
0018+++8F77~ db 0 ;00-1f
|
|
0019+++8F77~ db 0 ;ff|00-1f
|
|
0020+++8F77 ends
|
|
0021+++8F77
|
|
0022+++8F77 Start
|
|
0023+++8F77 ifndef NoPrologue
|
|
0024+++8F77~ ld hl,End
|
|
0025+++8F77~ jr Init
|
|
0026+++8F77~ jp PTS.PLAY
|
|
0027+++8F77~ jp PTS.MUTE
|
|
0028+++8F77 endif
|
|
0029+++8F77
|
|
0030+++8F77 3E 02 Init ld a,PTS.SETUP.PT2
|
|
0031+++8F79 C3 6C 83 jp PTS.INIT
|
|
0032+++8F7C
|
|
0033+++8F7C ifdef HaveFormatCheck
|
|
0034+++8F7C include "format.asm"
|
|
0001+++8F7C ;some format checking macros
|
|
0002+++8F7C ifndef _format_asm_defined
|
|
0003+++8F7C~ define _format_asm_defined
|
|
0004+++8F7C~ 0005+++8F7C~ macro LessOrEqual number
|
|
0006+++8F7C~ ld a,number
|
|
0007+++8F7C~ cp (hl)
|
|
0008+++8F7C~ inc hl
|
|
0009+++8F7C~ ret c
|
|
0010+++8F7C~ endm
|
|
0011+++8F7C~
|
|
0012+++8F7C~ macro Greater number
|
|
0013+++8F7C~ ld a,(hl)
|
|
0014+++8F7C~ inc hl
|
|
0015+++8F7C~ cp number
|
|
0016+++8F7C~ ret c
|
|
0017+++8F7C~ endm
|
|
0018+++8F7C~
|
|
0019+++8F7C~ macro AnyByte
|
|
0020+++8F7C~ inc hl
|
|
0021+++8F7C~ endm
|
|
0022+++8F7C~
|
|
0023+++8F7C~ macro AnyBytes count
|
|
0024+++8F7C~ if count > 7
|
|
0025+++8F7C~ ld a,l
|
|
0026+++8F7C~ add a,count
|
|
0027+++8F7C~ ld l,a
|
|
0028+++8F7C~ adc a,h
|
|
0029+++8F7C~ sub l
|
|
0030+++8F7C~ ld h,a
|
|
0031+++8F7C~ else
|
|
0032+++8F7C~ dup count
|
|
0033+++8F7C~ inc hl
|
|
0034+++8F7C~ edup
|
|
0035+++8F7C~ endif
|
|
0036+++8F7C~ endm
|
|
0037+++8F7C~
|
|
0038+++8F7C~ macro EqualTo number
|
|
0039+++8F7C~ ld a,number
|
|
0040+++8F7C~ cp (hl)
|
|
0041+++8F7C~ inc hl
|
|
0042+++8F7C~ ret nz
|
|
0043+++8F7C~ endm
|
|
0044+++8F7C~ 0045+++8F7C endif
|
|
0046+++8F7C
|
|
0035+++8F7C
|
|
0036+++8F7C ;in HL - module addr
|
|
0037+++8F7C ;out Z - is pt2
|
|
0038+++8F7C CheckFormat
|
|
0039+++8F7C ;Tempo
|
|
0040+++8F7C Greater 2
|
|
0040+++8F7C 7E > ld a,(hl)
|
|
0040+++8F7D 23 > inc hl
|
|
0040+++8F7E FE 02 > cp number
|
|
0040+++8F80 D8 > ret c
|
|
0041+++8F81 ;Length
|
|
0042+++8F81 Greater 1
|
|
0042+++8F81 7E > ld a,(hl)
|
|
0042+++8F82 23 > inc hl
|
|
0042+++8F83 FE 01 > cp number
|
|
0042+++8F85 D8 > ret c
|
|
0043+++8F86 ;Loop
|
|
0044+++8F86 LessOrEqual 254
|
|
0044+++8F86 3E FE > ld a,number
|
|
0044+++8F88 BE > cp (hl)
|
|
0044+++8F89 23 > inc hl
|
|
0044+++8F8A D8 > ret c
|
|
0045+++8F8B ;Samples+Ornaments
|
|
0046+++8F8B 06 30 ld b,(Header.Patterns-Header.Samples)/2
|
|
0047+++8F8D .samorns
|
|
0048+++8F8D AnyByte
|
|
0048+++8F8D 23 > inc hl
|
|
0049+++8F8E LessOrEqual #36
|
|
0049+++8F8E 3E 36 > ld a,number
|
|
0049+++8F90 BE > cp (hl)
|
|
0049+++8F91 23 > inc hl
|
|
0049+++8F92 D8 > ret c
|
|
0050+++8F93 10 F8 djnz .samorns
|
|
0051+++8F95 ;Patterns
|
|
0052+++8F95 AnyByte
|
|
0052+++8F95 23 > inc hl
|
|
0053+++8F96 LessOrEqual 1
|
|
0053+++8F96 3E 01 > ld a,number
|
|
0053+++8F98 BE > cp (hl)
|
|
0053+++8F99 23 > inc hl
|
|
0053+++8F9A D8 > ret c
|
|
0054+++8F9B ;Name
|
|
0055+++8F9B AnyBytes Header.Positions-Header.Name
|
|
0055+++8F9B 7D > ld a,l
|
|
0055+++8F9C C6 1E > add a,count
|
|
0055+++8F9E 6F > ld l,a
|
|
0055+++8F9F 8C > adc a,h
|
|
0055+++8FA0 95 > sub l
|
|
0055+++8FA1 67 > ld h,a
|
|
0056+++8FA2 ;Positions
|
|
0057+++8FA2 ;first should be not marker
|
|
0058+++8FA2 LessOrEqual #1f
|
|
0058+++8FA2 3E 1F > ld a,number
|
|
0058+++8FA4 BE > cp (hl)
|
|
0058+++8FA5 23 > inc hl
|
|
0058+++8FA6 D8 > ret c
|
|
0059+++8FA7 06 FF ld b,255 ;max positions
|
|
0060+++8FA9 .positions
|
|
0061+++8FA9 7E ld a,(hl)
|
|
0062+++8FAA FE FF cp 255
|
|
0063+++8FAC C8 ret z ;finish
|
|
0064+++8FAD LessOrEqual #1f
|
|
0064+++8FAD 3E 1F > ld a,number
|
|
0064+++8FAF BE > cp (hl)
|
|
0064+++8FB0 23 > inc hl
|
|
0064+++8FB1 D8 > ret c
|
|
0065+++8FB2 10 F5 djnz .positions
|
|
0066+++8FB4 ;fall through
|
|
0067+++8FB4 7C .fail ld a,h
|
|
0068+++8FB5 A7 and a ;reset Z
|
|
0069+++8FB6 C9 ret
|
|
0070+++8FB7
|
|
0071+++8FB7 display "PT2 checker size: ",$-CheckFormat
|
|
0072+++8FB7 endif
|
|
0073+++8FB7
|
|
0074+++8FB7 endmod
|
|
0075+++8FB7
|
|
0076+++8FB7 include "PTSPlay.asm"
|
|
0001+++8FB7 ifndef _pts_asm_defined
|
|
0002+++8FB7~ define _pts_asm_defined
|
|
0003+++8FB7~ 0004+++8FB7~ MODULE PTS
|
|
0005+++8FB7~
|
|
0006+++8FB7~ ;Universal PT2'n'PT3 Turbo Sound player for ZX Spectrum
|
|
0007+++8FB7~ ;(c)2004-2007 S.V.Bulba <vorobey@mail.khstu.ru>
|
|
0008+++8FB7~ ;Specially for AlCo
|
|
0009+++8FB7~ ;http://bulba.untergrund.net/ (http://bulba.at.kz/)
|
|
0010+++8FB7~ 0011+++8FB7~ ;Release number
|
|
0012+++8FB7~ Release EQU "0"
|
|
0013+++8FB7~ 0014+++8FB7~ ;Conditional assembly
|
|
0015+++8FB7~ ;1) Current position counters at (Vars1+0) and (Vars2+0)
|
|
0016+++8FB7~ CurPosCounter=0
|
|
0017+++8FB7~ ;2) Allow channels allocation bits at (SETUP)
|
|
0018+++8FB7~ ACBBAC=0
|
|
0019+++8FB7~ ;3) Allow loop checking and disabling
|
|
0020+++8FB7~ LoopChecker=0
|
|
0021+++8FB7~ ;4) Insert official identificator
|
|
0022+++8FB7~ Id=0
|
|
0023+++8FB7~ ;5) Set IY for correct return to ZX Basic
|
|
0024+++8FB7~ Basic=0
|
|
0025+++8FB7~ 0026+++8FB7~ ;Features
|
|
0027+++8FB7~ ;--------
|
|
0028+++8FB7~ ;-Can be compiled at any address (i.e. no need rounding ORG
|
|
0029+++8FB7~ ; address).
|
|
0030+++8FB7~ ;-Variables (VARS) can be located at any address (not only after
|
|
0031+++8FB7~ ; code block).
|
|
0032+++8FB7~ ;-INIT subprogram checks PT3-module version and rightly
|
|
0033+++8FB7~ ; generates both note and volume tables outside of code block
|
|
0034+++8FB7~ ; (in VARS).
|
|
0035+++8FB7~ ;-Two portamento (spc. command 3xxx) algorithms (depending of
|
|
0036+++8FB7~ ; PT3 module version).
|
|
0037+++8FB7~ ;-New 1.XX and 2.XX special command behaviour (only for PT v3.7
|
|
0038+++8FB7~ ; and higher).
|
|
0039+++8FB7~ ;-Any Tempo value are accepted (including Tempo=1 and Tempo=2).
|
|
0040+++8FB7~ ;-TS modes: 2xPT3, 2xPT2 and PT v3.7 TS standard.
|
|
0041+++8FB7~ ;-Fully compatible with Ay_Emul PT3 and PT2 players codes.
|
|
0042+++8FB7~ ;-See also notes at the end of this source code.
|
|
0043+++8FB7~ 0044+++8FB7~ ;Limitations
|
|
0045+++8FB7~ ;-----------
|
|
0046+++8FB7~ ;-Can run in RAM only (self-modified code is used).
|
|
0047+++8FB7~ ;-PT2 position list must be end by #FF marker only.
|
|
0048+++8FB7~ 0049+++8FB7~ ;Warning!!! PLAY subprogram can crash if no module are loaded
|
|
0050+++8FB7~ ;into RAM or INIT subprogram was not called before.
|
|
0051+++8FB7~ 0052+++8FB7~ ;Call MUTE or INIT one more time to mute sound after stopping
|
|
0053+++8FB7~ ;playing
|
|
0054+++8FB7~ 0055+++8FB7~ TonA EQU 0
|
|
0056+++8FB7~ TonB EQU 2
|
|
0057+++8FB7~ TonC EQU 4
|
|
0058+++8FB7~ Noise EQU 6
|
|
0059+++8FB7~ Mixer EQU 7
|
|
0060+++8FB7~ AmplA EQU 8
|
|
0061+++8FB7~ AmplB EQU 9
|
|
0062+++8FB7~ AmplC EQU 10
|
|
0063+++8FB7~ Env EQU 11
|
|
0064+++8FB7~ EnvTp EQU 13
|
|
0065+++8FB7~ 0066+++8FB7~ START
|
|
0067+++8FB7~ 0068+++8FB7~ SETUP.NOLOOP EQU 1
|
|
0069+++8FB7~ SETUP.PT2 EQU 2
|
|
0070+++8FB7~ SETUP.ACB EQU 4
|
|
0071+++8FB7~ SETUP.BAC EQU 8
|
|
0072+++8FB7~ SETUP.TS02 EQU 16
|
|
0073+++8FB7~ SETUP.TSPT3 EQU 32
|
|
0074+++8FB7~ 0075+++8FB7~ SETUP DB 0 ;set bit0, if you want to play without looping
|
|
0076+++8FB7~ ;(optional);
|
|
0077+++8FB7~ ;set bit1 for PT2 and reset for PT3 before
|
|
0078+++8FB7~ ;calling INIT;
|
|
0079+++8FB7~ ;bits2-3: %00-ABC, %01-ACB, %10-BAC (optional);
|
|
0080+++8FB7~ ;bits4-5: %00-no TS, %01-2 modules TS, %10-
|
|
0081+++8FB7~ ;autodetect PT3 TS-format by AlCo (PT 3.7+);
|
|
0082+++8FB7~ ;Remark: old PT3 TS-format by AlCo (PT 3.6) is not
|
|
0083+++8FB7~ ;documented and must be converted to new standard.
|
|
0084+++8FB7~ ;bit6 is set each time, when loop point of 2nd TS
|
|
0085+++8FB7~ ;module is passed (optional).
|
|
0086+++8FB7~ ;bit7 is set each time, when loop point of 1st TS
|
|
0087+++8FB7~ ;or of single module is passed (optional).
|
|
0088+++8FB7~ 0089+++8FB7~ ;Identifier
|
|
0090+++8FB7~ IF Id
|
|
0091+++8FB7~ DB "=UniPT2/PT3/TS-Player r.",Release,"="
|
|
0092+++8FB7~ ENDIF
|
|
0093+++8FB7~ 0094+++8FB7~ IF LoopChecker
|
|
0095+++8FB7~ CHECKLP LD HL,SETUP
|
|
0096+++8FB7~ BIT 0,(IY-100+VRS.ModNum)
|
|
0097+++8FB7~ JR Z,CHL1
|
|
0098+++8FB7~ SET 6,(HL)
|
|
0099+++8FB7~ JR CHL2
|
|
0100+++8FB7~ CHL1 SET 7,(HL)
|
|
0101+++8FB7~ CHL2 BIT 0,(HL)
|
|
0102+++8FB7~ RET Z
|
|
0103+++8FB7~ POP HL
|
|
0104+++8FB7~ INC (IY-100+VRS.DelyCnt)
|
|
0105+++8FB7~ INC (IY-100+VRS.ChanA+CHP.NtSkCn)
|
|
0106+++8FB7~ XOR A
|
|
0107+++8FB7~ LD (IY-100+VRS.AYREGS+AmplA),A
|
|
0108+++8FB7~ LD (IY-100+VRS.AYREGS+AmplB),A
|
|
0109+++8FB7~ LD (IY-100+VRS.AYREGS+AmplC),A
|
|
0110+++8FB7~ RET
|
|
0111+++8FB7~ ENDIF
|
|
0112+++8FB7~ 0113+++8FB7~ MUTE XOR A
|
|
0114+++8FB7~ LD H,A
|
|
0115+++8FB7~ LD L,A
|
|
0116+++8FB7~ LD (VARS1+VRS.AYREGS+AmplA),A
|
|
0117+++8FB7~ LD (VARS1+VRS.AYREGS+AmplB),HL
|
|
0118+++8FB7~ LD (VARS2+VRS.AYREGS+AmplA),A
|
|
0119+++8FB7~ LD (VARS2+VRS.AYREGS+AmplB),HL
|
|
0120+++8FB7~ JP ROUT
|
|
0121+++8FB7~ 0122+++8FB7~ INIT
|
|
0123+++8FB7~ ;HL - AddressOfModule
|
|
0124+++8FB7~ ;DE - AddresOf2ndModule
|
|
0125+++8FB7~ ;A - mode
|
|
0126+++8FB7~ PUSH DE
|
|
0127+++8FB7~ PUSH HL
|
|
0128+++8FB7~ LD HL,VARS
|
|
0129+++8FB7~ LD (HL),0
|
|
0130+++8FB7~ LD DE,VARS+1
|
|
0131+++8FB7~ LD BC,VAR0END-VARS-1
|
|
0132+++8FB7~ LDIR
|
|
0133+++8FB7~ INC HL
|
|
0134+++8FB7~ LD (VARS1+VRS.AdInPtA),HL ;ptr to zero
|
|
0135+++8FB7~ LD (VARS2+VRS.AdInPtA),HL
|
|
0136+++8FB7~ 0137+++8FB7~ POP HL
|
|
0138+++8FB7~ LD IY,VARS1+100
|
|
0139+++8FB7~ LD (SETUP),A
|
|
0140+++8FB7~ AND SETUP.PT2
|
|
0141+++8FB7~ JP NZ,I_PT2
|
|
0142+++8FB7~ 0143+++8FB7~ CALL INITPT3
|
|
0144+++8FB7~ LD HL,(e_-SamCnv-2)*256+#18
|
|
0145+++8FB7~ LD (SamCnv),HL
|
|
0146+++8FB7~ LD A,#BA
|
|
0147+++8FB7~ LD (OrnCP),A
|
|
0148+++8FB7~ LD (SamCP),A
|
|
0149+++8FB7~ LD A,#7B
|
|
0150+++8FB7~ LD (OrnLD),A
|
|
0151+++8FB7~ LD (SamLD),A
|
|
0152+++8FB7~ LD A,#87
|
|
0153+++8FB7~ LD (SamClc2),A
|
|
0154+++8FB7~ POP HL
|
|
0155+++8FB7~ ;Use version and ton table of 1st module
|
|
0156+++8FB7~ LD A,(IX+13-100) ;EXTRACT VERSION NUMBER
|
|
0157+++8FB7~ SUB #30
|
|
0158+++8FB7~ JR C,L20
|
|
0159+++8FB7~ CP 10
|
|
0160+++8FB7~ JR C,L21
|
|
0161+++8FB7~ L20 LD A,6
|
|
0162+++8FB7~ L21 LD (Version),A
|
|
0163+++8FB7~ PUSH AF ;VolTable version
|
|
0164+++8FB7~ CP 4
|
|
0165+++8FB7~ LD A,(IX+99-100) ;TONE TABLE NUMBER
|
|
0166+++8FB7~ RLA
|
|
0167+++8FB7~ AND 7
|
|
0168+++8FB7~ PUSH AF ;NoteTable number
|
|
0169+++8FB7~ 0170+++8FB7~ LD IY,VARS2+100
|
|
0171+++8FB7~ LD A,(SETUP)
|
|
0172+++8FB7~ AND SETUP.TS02|SETUP.TSPT3
|
|
0173+++8FB7~ JR Z,NOTS
|
|
0174+++8FB7~ CP SETUP.TS02
|
|
0175+++8FB7~ JR Z,TwoPT3s
|
|
0176+++8FB7~ LD A,(Version)
|
|
0177+++8FB7~ CP 7
|
|
0178+++8FB7~ JR C,NOTS
|
|
0179+++8FB7~ LD A,(IX+98-100) ;ALCO TS MARKER
|
|
0180+++8FB7~ CP #20
|
|
0181+++8FB7~ JR Z,NOTS
|
|
0182+++8FB7~ LD HL,VARS1
|
|
0183+++8FB7~ LD DE,VARS2
|
|
0184+++8FB7~ LD BC,VRS
|
|
0185+++8FB7~ LDIR
|
|
0186+++8FB7~ SET 1,(IY-100+VRS.ModNum)
|
|
0187+++8FB7~ LD C,A
|
|
0188+++8FB7~ ADD A,A
|
|
0189+++8FB7~ ADD A,C
|
|
0190+++8FB7~ SUB 2
|
|
0191+++8FB7~ LD (TSSub),A
|
|
0192+++8FB7~ JR AlCoTS_
|
|
0193+++8FB7~ TwoPT3s CALL INITPT3
|
|
0194+++8FB7~ AlCoTS_ LD A,1
|
|
0195+++8FB7~ LD (is_ts),A
|
|
0196+++8FB7~ SET 0,(IY-100+VRS.ModNum)
|
|
0197+++8FB7~ 0198+++8FB7~ NOTS LD BC,PT3PD
|
|
0199+++8FB7~ LD HL,0
|
|
0200+++8FB7~ LD DE,PT3EMPTYORN
|
|
0201+++8FB7~ JR INITCOMMON
|
|
0202+++8FB7~ 0203+++8FB7~ I_PT2 CALL INITPT2
|
|
0204+++8FB7~ LD HL,#51CB
|
|
0205+++8FB7~ LD (SamCnv),HL
|
|
0206+++8FB7~ LD A,#BB
|
|
0207+++8FB7~ LD (OrnCP),A
|
|
0208+++8FB7~ LD (SamCP),A
|
|
0209+++8FB7~ LD A,#7A
|
|
0210+++8FB7~ LD (OrnLD),A
|
|
0211+++8FB7~ LD (SamLD),A
|
|
0212+++8FB7~ LD A,#80
|
|
0213+++8FB7~ LD (SamClc2),A
|
|
0214+++8FB7~ POP HL
|
|
0215+++8FB7~ LD A,5
|
|
0216+++8FB7~ LD (Version),A
|
|
0217+++8FB7~ PUSH AF
|
|
0218+++8FB7~ LD A,2
|
|
0219+++8FB7~ PUSH AF
|
|
0220+++8FB7~ 0221+++8FB7~ LD A,(SETUP)
|
|
0222+++8FB7~ AND SETUP.TS02|SETUP.TSPT3
|
|
0223+++8FB7~ JR Z,NOTS2
|
|
0224+++8FB7~ 0225+++8FB7~ LD IY,VARS2+100
|
|
0226+++8FB7~ LD A,1
|
|
0227+++8FB7~ LD (is_ts),A
|
|
0228+++8FB7~ SET 0,(IY-100+VRS.ModNum)
|
|
0229+++8FB7~ CALL INITPT2
|
|
0230+++8FB7~ 0231+++8FB7~ NOTS2 LD BC,PT2PD
|
|
0232+++8FB7~ LD HL,#8687
|
|
0233+++8FB7~ LD DE,PT2EMPTYORN
|
|
0234+++8FB7~ 0235+++8FB7~ INITCOMMON
|
|
0236+++8FB7~ 0237+++8FB7~ IF Basic
|
|
0238+++8FB7~ LD IY,#5C3A
|
|
0239+++8FB7~ ENDIF
|
|
0240+++8FB7~ 0241+++8FB7~ LD (PTDEC),BC
|
|
0242+++8FB7~ LD (PsCalc),HL
|
|
0243+++8FB7~ PUSH DE
|
|
0244+++8FB7~ 0245+++8FB7~ ;note table data depacker
|
|
0246+++8FB7~ ;(c) Ivan Roshin
|
|
0247+++8FB7~ LD DE,T_PACK
|
|
0248+++8FB7~ LD BC,T1_+(2*49)-1
|
|
0249+++8FB7~ TP_0 LD A,(DE)
|
|
0250+++8FB7~ INC DE
|
|
0251+++8FB7~ CP 15*2
|
|
0252+++8FB7~ JR NC,TP_1
|
|
0253+++8FB7~ LD H,A
|
|
0254+++8FB7~ LD A,(DE)
|
|
0255+++8FB7~ LD L,A
|
|
0256+++8FB7~ INC DE
|
|
0257+++8FB7~ JR TP_2
|
|
0258+++8FB7~ TP_1 PUSH DE
|
|
0259+++8FB7~ LD D,0
|
|
0260+++8FB7~ LD E,A
|
|
0261+++8FB7~ ADD HL,DE
|
|
0262+++8FB7~ ADD HL,DE
|
|
0263+++8FB7~ POP DE
|
|
0264+++8FB7~ TP_2 LD A,H
|
|
0265+++8FB7~ LD (BC),A
|
|
0266+++8FB7~ DEC BC
|
|
0267+++8FB7~ LD A,L
|
|
0268+++8FB7~ LD (BC),A
|
|
0269+++8FB7~ DEC BC
|
|
0270+++8FB7~ SUB (#F8*2)&255
|
|
0271+++8FB7~ JR NZ,TP_0
|
|
0272+++8FB7~ 0273+++8FB7~ INC A
|
|
0274+++8FB7~ LD (VARS1+VRS.DelyCnt),A
|
|
0275+++8FB7~ LD (VARS2+VRS.DelyCnt),A
|
|
0276+++8FB7~ LD HL,#F001 ;H - CHP.Volume, L - CHP.NtSkCn
|
|
0277+++8FB7~ LD (VARS1+VRS.ChanA+CHP.NtSkCn),HL
|
|
0278+++8FB7~ LD (VARS1+VRS.ChanB+CHP.NtSkCn),HL
|
|
0279+++8FB7~ LD (VARS1+VRS.ChanC+CHP.NtSkCn),HL
|
|
0280+++8FB7~ LD (VARS2+VRS.ChanA+CHP.NtSkCn),HL
|
|
0281+++8FB7~ LD (VARS2+VRS.ChanB+CHP.NtSkCn),HL
|
|
0282+++8FB7~ LD (VARS2+VRS.ChanC+CHP.NtSkCn),HL
|
|
0283+++8FB7~ POP HL
|
|
0284+++8FB7~ LD (VARS1+VRS.ChanA+CHP.OrnPtr),HL
|
|
0285+++8FB7~ LD (VARS1+VRS.ChanB+CHP.OrnPtr),HL
|
|
0286+++8FB7~ LD (VARS1+VRS.ChanC+CHP.OrnPtr),HL
|
|
0287+++8FB7~ LD (VARS2+VRS.ChanA+CHP.OrnPtr),HL
|
|
0288+++8FB7~ LD (VARS2+VRS.ChanB+CHP.OrnPtr),HL
|
|
0289+++8FB7~ LD (VARS2+VRS.ChanC+CHP.OrnPtr),HL
|
|
0290+++8FB7~ 0291+++8FB7~ POP AF
|
|
0292+++8FB7~ 0293+++8FB7~ ;NoteTableCreator (c) Ivan Roshin
|
|
0294+++8FB7~ ;A - NoteTableNumber*2+VersionForNoteTable
|
|
0295+++8FB7~ ;(xx1b - 3.xx..3.4r, xx0b - 3.4x..3.6x..VTII1.0)
|
|
0296+++8FB7~ 0297+++8FB7~ LD HL,NT_DATA
|
|
0298+++8FB7~ LD D,0
|
|
0299+++8FB7~ ADD A,A
|
|
0300+++8FB7~ LD E,A
|
|
0301+++8FB7~ ADD HL,DE
|
|
0302+++8FB7~ LD E,(HL)
|
|
0303+++8FB7~ INC HL
|
|
0304+++8FB7~ SRL E
|
|
0305+++8FB7~ SBC A,A
|
|
0306+++8FB7~ AND #A7 ;#00 (NOP) or #A7 (AND A)
|
|
0307+++8FB7~ LD (L3),A
|
|
0308+++8FB7~ EX DE,HL
|
|
0309+++8FB7~ LD BC,T1_
|
|
0310+++8FB7~ ADD HL,BC
|
|
0311+++8FB7~ 0312+++8FB7~ LD A,(DE)
|
|
0313+++8FB7~ ADD A,T_&255
|
|
0314+++8FB7~ LD C,A
|
|
0315+++8FB7~ ADC A,T_/256
|
|
0316+++8FB7~ SUB C
|
|
0317+++8FB7~ LD B,A
|
|
0318+++8FB7~ PUSH BC
|
|
0319+++8FB7~ LD DE,NT_
|
|
0320+++8FB7~ PUSH DE
|
|
0321+++8FB7~ 0322+++8FB7~ LD B,12
|
|
0323+++8FB7~ L1 PUSH BC
|
|
0324+++8FB7~ LD C,(HL)
|
|
0325+++8FB7~ INC HL
|
|
0326+++8FB7~ PUSH HL
|
|
0327+++8FB7~ LD B,(HL)
|
|
0328+++8FB7~ 0329+++8FB7~ PUSH DE
|
|
0330+++8FB7~ EX DE,HL
|
|
0331+++8FB7~ LD DE,23
|
|
0332+++8FB7~ LD IXH,8
|
|
0333+++8FB7~ 0334+++8FB7~ L2 SRL B
|
|
0335+++8FB7~ RR C
|
|
0336+++8FB7~ L3 DB #19 ;AND A or NOP
|
|
0337+++8FB7~ LD A,C
|
|
0338+++8FB7~ ADC A,D ;=ADC 0
|
|
0339+++8FB7~ LD (HL),A
|
|
0340+++8FB7~ INC HL
|
|
0341+++8FB7~ LD A,B
|
|
0342+++8FB7~ ADC A,D
|
|
0343+++8FB7~ LD (HL),A
|
|
0344+++8FB7~ ADD HL,DE
|
|
0345+++8FB7~ DEC IXH
|
|
0346+++8FB7~ JR NZ,L2
|
|
0347+++8FB7~ 0348+++8FB7~ POP DE
|
|
0349+++8FB7~ INC DE
|
|
0350+++8FB7~ INC DE
|
|
0351+++8FB7~ POP HL
|
|
0352+++8FB7~ INC HL
|
|
0353+++8FB7~ POP BC
|
|
0354+++8FB7~ DJNZ L1
|
|
0355+++8FB7~ 0356+++8FB7~ POP HL
|
|
0357+++8FB7~ POP DE
|
|
0358+++8FB7~ 0359+++8FB7~ LD A,E
|
|
0360+++8FB7~ CP TCOLD_1&255
|
|
0361+++8FB7~ JR NZ,CORR_1
|
|
0362+++8FB7~ LD A,#FD
|
|
0363+++8FB7~ LD (NT_+#2E),A
|
|
0364+++8FB7~ 0365+++8FB7~ CORR_1 LD A,(DE)
|
|
0366+++8FB7~ AND A
|
|
0367+++8FB7~ JR Z,TC_EXIT
|
|
0368+++8FB7~ RRA
|
|
0369+++8FB7~ PUSH AF
|
|
0370+++8FB7~ ADD A,A
|
|
0371+++8FB7~ LD C,A
|
|
0372+++8FB7~ ADD HL,BC
|
|
0373+++8FB7~ POP AF
|
|
0374+++8FB7~ JR NC,CORR_2
|
|
0375+++8FB7~ DEC (HL)
|
|
0376+++8FB7~ DEC (HL)
|
|
0377+++8FB7~ CORR_2 INC (HL)
|
|
0378+++8FB7~ AND A
|
|
0379+++8FB7~ SBC HL,BC
|
|
0380+++8FB7~ INC DE
|
|
0381+++8FB7~ JR CORR_1
|
|
0382+++8FB7~ 0383+++8FB7~ TC_EXIT
|
|
0384+++8FB7~ 0385+++8FB7~ POP AF
|
|
0386+++8FB7~ 0387+++8FB7~ ;VolTableCreator (c) Ivan Roshin
|
|
0388+++8FB7~ ;A - VersionForVolumeTable (0..4 - 3.xx..3.4x;
|
|
0389+++8FB7~ ;5.. - 2.x,3.5x..3.6x..VTII1.0)
|
|
0390+++8FB7~ 0391+++8FB7~ CP 5
|
|
0392+++8FB7~ LD HL,#11
|
|
0393+++8FB7~ LD D,H
|
|
0394+++8FB7~ LD E,H
|
|
0395+++8FB7~ LD A,#17
|
|
0396+++8FB7~ JR NC,M1
|
|
0397+++8FB7~ DEC L
|
|
0398+++8FB7~ LD E,L
|
|
0399+++8FB7~ XOR A
|
|
0400+++8FB7~ M1 LD (M2),A
|
|
0401+++8FB7~ 0402+++8FB7~ LD IX,VT_+16
|
|
0403+++8FB7~ 0404+++8FB7~ LD C,#F
|
|
0405+++8FB7~ INITV2 PUSH HL
|
|
0406+++8FB7~ 0407+++8FB7~ ADD HL,DE
|
|
0408+++8FB7~ EX DE,HL
|
|
0409+++8FB7~ SBC HL,HL
|
|
0410+++8FB7~ 0411+++8FB7~ LD B,#10
|
|
0412+++8FB7~ INITV1 LD A,L
|
|
0413+++8FB7~ M2 DB #7D
|
|
0414+++8FB7~ LD A,H
|
|
0415+++8FB7~ ADC A,0
|
|
0416+++8FB7~ LD (IX),A
|
|
0417+++8FB7~ INC IX
|
|
0418+++8FB7~ ADD HL,DE
|
|
0419+++8FB7~ DJNZ INITV1
|
|
0420+++8FB7~ 0421+++8FB7~ POP HL
|
|
0422+++8FB7~ LD A,E
|
|
0423+++8FB7~ CP #77
|
|
0424+++8FB7~ JR NZ,M3
|
|
0425+++8FB7~ INC E
|
|
0426+++8FB7~ M3 DEC C
|
|
0427+++8FB7~ JR NZ,INITV2
|
|
0428+++8FB7~ 0429+++8FB7~ JP ROUT
|
|
0430+++8FB7~ 0431+++8FB7~ INITPT3 CALL SETMDAD
|
|
0432+++8FB7~ PUSH HL
|
|
0433+++8FB7~ LD DE,100
|
|
0434+++8FB7~ ADD HL,DE
|
|
0435+++8FB7~ LD A,(HL)
|
|
0436+++8FB7~ LD (IY-100+VRS.Delay),A
|
|
0437+++8FB7~ PUSH HL
|
|
0438+++8FB7~ POP IX
|
|
0439+++8FB7~ ADD HL,DE
|
|
0440+++8FB7~ CALL SETCPPT
|
|
0441+++8FB7~ LD E,(IX+102-100)
|
|
0442+++8FB7~ INC HL
|
|
0443+++8FB7~ 0444+++8FB7~ IF CurPosCounter
|
|
0445+++8FB7~ LD (IY-100+VRS.PosSub),L
|
|
0446+++8FB7~ ENDIF
|
|
0447+++8FB7~ 0448+++8FB7~ ADD HL,DE
|
|
0449+++8FB7~ CALL SETLPPT
|
|
0450+++8FB7~ POP DE
|
|
0451+++8FB7~ LD L,(IX+103-100)
|
|
0452+++8FB7~ LD H,(IX+104-100)
|
|
0453+++8FB7~ ADD HL,DE
|
|
0454+++8FB7~ CALL SETPTPT
|
|
0455+++8FB7~ LD HL,169
|
|
0456+++8FB7~ ADD HL,DE
|
|
0457+++8FB7~ CALL SETORPT
|
|
0458+++8FB7~ LD HL,105
|
|
0459+++8FB7~ ADD HL,DE
|
|
0460+++8FB7~ 0461+++8FB7~ SETSMPT LD (IY-100+VRS.SamPtrs),L
|
|
0462+++8FB7~ LD (IY-100+VRS.SamPtrs+1),H
|
|
0463+++8FB7~ RET
|
|
0464+++8FB7~ 0465+++8FB7~ INITPT2 LD A,(HL)
|
|
0466+++8FB7~ LD (IY-100+VRS.Delay),A
|
|
0467+++8FB7~ PUSH HL
|
|
0468+++8FB7~ PUSH HL
|
|
0469+++8FB7~ PUSH HL
|
|
0470+++8FB7~ INC HL
|
|
0471+++8FB7~ INC HL
|
|
0472+++8FB7~ LD A,(HL)
|
|
0473+++8FB7~ INC HL
|
|
0474+++8FB7~ CALL SETSMPT
|
|
0475+++8FB7~ LD E,(HL)
|
|
0476+++8FB7~ INC HL
|
|
0477+++8FB7~ LD D,(HL)
|
|
0478+++8FB7~ POP HL
|
|
0479+++8FB7~ AND A
|
|
0480+++8FB7~ SBC HL,DE
|
|
0481+++8FB7~ CALL SETMDAD
|
|
0482+++8FB7~ POP HL
|
|
0483+++8FB7~ LD DE,67
|
|
0484+++8FB7~ ADD HL,DE
|
|
0485+++8FB7~ CALL SETORPT
|
|
0486+++8FB7~ LD E,32
|
|
0487+++8FB7~ ADD HL,DE
|
|
0488+++8FB7~ LD C,(HL)
|
|
0489+++8FB7~ INC HL
|
|
0490+++8FB7~ LD B,(HL)
|
|
0491+++8FB7~ LD E,30
|
|
0492+++8FB7~ ADD HL,DE
|
|
0493+++8FB7~ CALL SETCPPT
|
|
0494+++8FB7~ LD E,A
|
|
0495+++8FB7~ INC HL
|
|
0496+++8FB7~ 0497+++8FB7~ IF CurPosCounter
|
|
0498+++8FB7~ LD (IY-100+VRS.PosSub),L
|
|
0499+++8FB7~ ENDIF
|
|
0500+++8FB7~ 0501+++8FB7~ ADD HL,DE
|
|
0502+++8FB7~ CALL SETLPPT
|
|
0503+++8FB7~ POP HL
|
|
0504+++8FB7~ ADD HL,BC
|
|
0505+++8FB7~ 0506+++8FB7~ SETPTPT LD (IY-100+VRS.PatsPtr),L
|
|
0507+++8FB7~ LD (IY-100+VRS.PatsPtr+1),H
|
|
0508+++8FB7~ RET
|
|
0509+++8FB7~ 0510+++8FB7~ SETMDAD LD (IY-100+VRS.MODADDR),L
|
|
0511+++8FB7~ LD (IY-100+VRS.MODADDR+1),H
|
|
0512+++8FB7~ RET
|
|
0513+++8FB7~ 0514+++8FB7~ SETORPT LD (IY-100+VRS.OrnPtrs),L
|
|
0515+++8FB7~ LD (IY-100+VRS.OrnPtrs+1),H
|
|
0516+++8FB7~ RET
|
|
0517+++8FB7~ 0518+++8FB7~ SETCPPT LD (IY-100+VRS.CrPsPtr),L
|
|
0519+++8FB7~ LD (IY-100+VRS.CrPsPtr+1),H
|
|
0520+++8FB7~ RET
|
|
0521+++8FB7~ 0522+++8FB7~ SETLPPT LD (IY-100+VRS.LPosPtr),L
|
|
0523+++8FB7~ LD (IY-100+VRS.LPosPtr+1),H
|
|
0524+++8FB7~ RET
|
|
0525+++8FB7~ 0526+++8FB7~ SETENBS LD (IY-100+VRS.EnvBase),L
|
|
0527+++8FB7~ LD (IY-100+VRS.EnvBase+1),H
|
|
0528+++8FB7~ RET
|
|
0529+++8FB7~ 0530+++8FB7~ SETESLD LD (IY-100+VRS.CurESld),L
|
|
0531+++8FB7~ LD (IY-100+VRS.CurESld+1),H
|
|
0532+++8FB7~ RET
|
|
0533+++8FB7~ 0534+++8FB7~ GETIX PUSH IY
|
|
0535+++8FB7~ POP IX
|
|
0536+++8FB7~ ADD IX,DE
|
|
0537+++8FB7~ RET
|
|
0538+++8FB7~ 0539+++8FB7~ PTDECOD CALL GETIX
|
|
0540+++8FB7~ PTDEC EQU $+1
|
|
0541+++8FB7~ JP #C3C3
|
|
0542+++8FB7~ 0543+++8FB7~ ;PT2 pattern decoder
|
|
0544+++8FB7~ PD2_SAM CALL SETSAM
|
|
0545+++8FB7~ JR PD2_LOOP
|
|
0546+++8FB7~ 0547+++8FB7~ PD2_EOff LD (IX-12+CHP.Env_En),A
|
|
0548+++8FB7~ JR PD2_LOOP
|
|
0549+++8FB7~ 0550+++8FB7~ PD2_ENV LD (IX-12+CHP.Env_En),16
|
|
0551+++8FB7~ LD (IY-100+VRS.AYREGS+EnvTp),A
|
|
0552+++8FB7~ LD A,(BC)
|
|
0553+++8FB7~ INC BC
|
|
0554+++8FB7~ LD L,A
|
|
0555+++8FB7~ LD A,(BC)
|
|
0556+++8FB7~ INC BC
|
|
0557+++8FB7~ LD H,A
|
|
0558+++8FB7~ CALL SETENBS
|
|
0559+++8FB7~ JR PD2_LOOP
|
|
0560+++8FB7~ 0561+++8FB7~ PD2_ORN CALL SETORN
|
|
0562+++8FB7~ JR PD2_LOOP
|
|
0563+++8FB7~ 0564+++8FB7~ PD2_SKIP INC A
|
|
0565+++8FB7~ LD (IX-12+CHP.NNtSkp),A
|
|
0566+++8FB7~ JR PD2_LOOP
|
|
0567+++8FB7~ 0568+++8FB7~ PD2_VOL RRCA
|
|
0569+++8FB7~ RRCA
|
|
0570+++8FB7~ RRCA
|
|
0571+++8FB7~ RRCA
|
|
0572+++8FB7~ LD (IX-12+CHP.Volume),A
|
|
0573+++8FB7~ JR PD2_LOOP
|
|
0574+++8FB7~ 0575+++8FB7~ PD2_DEL CALL C_DELAY
|
|
0576+++8FB7~ JR PD2_LOOP
|
|
0577+++8FB7~ 0578+++8FB7~ PD2_GLIS SET 2,(IX-12+CHP.Flags)
|
|
0579+++8FB7~ INC A
|
|
0580+++8FB7~ LD (IX-12+CHP.TnSlDl),A
|
|
0581+++8FB7~ LD (IX-12+CHP.TSlCnt),A
|
|
0582+++8FB7~ LD A,(BC)
|
|
0583+++8FB7~ INC BC
|
|
0584+++8FB7~ LD (IX-12+CHP.TSlStp),A
|
|
0585+++8FB7~ ADD A,A
|
|
0586+++8FB7~ SBC A,A
|
|
0587+++8FB7~ LD (IX-12+CHP.TSlStp+1),A
|
|
0588+++8FB7~ SCF
|
|
0589+++8FB7~ JR PD2_LP2
|
|
0590+++8FB7~ 0591+++8FB7~ PT2PD AND A
|
|
0592+++8FB7~ 0593+++8FB7~ PD2_LP2 EX AF,AF'
|
|
0594+++8FB7~ 0595+++8FB7~ PD2_LOOP LD A,(BC)
|
|
0596+++8FB7~ INC BC
|
|
0597+++8FB7~ ADD A,#20
|
|
0598+++8FB7~ JR Z,PD2_REL
|
|
0599+++8FB7~ JR C,PD2_SAM
|
|
0600+++8FB7~ ADD A,96
|
|
0601+++8FB7~ JR C,PD2_NOTE
|
|
0602+++8FB7~ INC A
|
|
0603+++8FB7~ JR Z,PD2_EOff
|
|
0604+++8FB7~ ADD A,15
|
|
0605+++8FB7~ JP Z,PD_FIN
|
|
0606+++8FB7~ JR C,PD2_ENV
|
|
0607+++8FB7~ ADD A,#10
|
|
0608+++8FB7~ JR C,PD2_ORN
|
|
0609+++8FB7~ ADD A,#40
|
|
0610+++8FB7~ JR C,PD2_SKIP
|
|
0611+++8FB7~ ADD A,#10
|
|
0612+++8FB7~ JR C,PD2_VOL
|
|
0613+++8FB7~ INC A
|
|
0614+++8FB7~ JR Z,PD2_DEL
|
|
0615+++8FB7~ INC A
|
|
0616+++8FB7~ JR Z,PD2_GLIS
|
|
0617+++8FB7~ INC A
|
|
0618+++8FB7~ JR Z,PD2_PORT
|
|
0619+++8FB7~ INC A
|
|
0620+++8FB7~ JR Z,PD2_STOP
|
|
0621+++8FB7~ LD A,(BC)
|
|
0622+++8FB7~ INC BC
|
|
0623+++8FB7~ LD (IX-12+CHP.CrNsSl),A
|
|
0624+++8FB7~ JR PD2_LOOP
|
|
0625+++8FB7~ 0626+++8FB7~ PD2_PORT RES 2,(IX-12+CHP.Flags)
|
|
0627+++8FB7~ LD A,(BC)
|
|
0628+++8FB7~ INC BC
|
|
0629+++8FB7~ INC BC ;ignoring precalc delta to right sound
|
|
0630+++8FB7~ INC BC
|
|
0631+++8FB7~ SCF
|
|
0632+++8FB7~ JR PD2_LP2
|
|
0633+++8FB7~ 0634+++8FB7~ PD2_STOP LD (IX-12+CHP.TSlCnt),A
|
|
0635+++8FB7~ JR PD2_LOOP
|
|
0636+++8FB7~ 0637+++8FB7~ PD2_REL LD (IX-12+CHP.Flags),A
|
|
0638+++8FB7~ JR PD2_EXIT
|
|
0639+++8FB7~ 0640+++8FB7~ PD2_NOTE LD L,A
|
|
0641+++8FB7~ LD A,(IX-12+CHP.Note)
|
|
0642+++8FB7~ LD (PrNote+1),A
|
|
0643+++8FB7~ LD (IX-12+CHP.Note),L
|
|
0644+++8FB7~ XOR A
|
|
0645+++8FB7~ LD (IX-12+CHP.TSlCnt),A
|
|
0646+++8FB7~ SET 0,(IX-12+CHP.Flags)
|
|
0647+++8FB7~ EX AF,AF'
|
|
0648+++8FB7~ JR NC,NOGLIS2
|
|
0649+++8FB7~ BIT 2,(IX-12+CHP.Flags)
|
|
0650+++8FB7~ JR NZ,NOPORT2
|
|
0651+++8FB7~ LD (LoStep),A
|
|
0652+++8FB7~ ADD A,A
|
|
0653+++8FB7~ SBC A,A
|
|
0654+++8FB7~ EX AF,AF'
|
|
0655+++8FB7~ LD H,A
|
|
0656+++8FB7~ LD L,A
|
|
0657+++8FB7~ INC A
|
|
0658+++8FB7~ CALL SETPORT
|
|
0659+++8FB7~ NOPORT2 LD (IX-12+CHP.TSlCnt),1
|
|
0660+++8FB7~ NOGLIS2 XOR A
|
|
0661+++8FB7~ 0662+++8FB7~ 0663+++8FB7~ PD2_EXIT LD (IX-12+CHP.PsInSm),A
|
|
0664+++8FB7~ LD (IX-12+CHP.PsInOr),A
|
|
0665+++8FB7~ LD (IX-12+CHP.CrTnSl),A
|
|
0666+++8FB7~ LD (IX-12+CHP.CrTnSl+1),A
|
|
0667+++8FB7~ JP PD_FIN
|
|
0668+++8FB7~ 0669+++8FB7~ ;PT3 pattern decoder
|
|
0670+++8FB7~ PD_OrSm LD (IX-12+CHP.Env_En),0
|
|
0671+++8FB7~ CALL SETORN
|
|
0672+++8FB7~ PD_SAM_ LD A,(BC)
|
|
0673+++8FB7~ INC BC
|
|
0674+++8FB7~ RRCA
|
|
0675+++8FB7~ 0676+++8FB7~ PD_SAM CALL SETSAM
|
|
0677+++8FB7~ JR PD_LOOP
|
|
0678+++8FB7~ 0679+++8FB7~ PD_VOL RRCA
|
|
0680+++8FB7~ RRCA
|
|
0681+++8FB7~ RRCA
|
|
0682+++8FB7~ RRCA
|
|
0683+++8FB7~ LD (IX-12+CHP.Volume),A
|
|
0684+++8FB7~ JR PD_LP2
|
|
0685+++8FB7~
|
|
0686+++8FB7~ PD_EOff LD (IX-12+CHP.Env_En),A
|
|
0687+++8FB7~ LD (IX-12+CHP.PsInOr),A
|
|
0688+++8FB7~ JR PD_LP2
|
|
0689+++8FB7~ 0690+++8FB7~ PD_SorE DEC A
|
|
0691+++8FB7~ JR NZ,PD_ENV
|
|
0692+++8FB7~ LD A,(BC)
|
|
0693+++8FB7~ INC BC
|
|
0694+++8FB7~ LD (IX-12+CHP.NNtSkp),A
|
|
0695+++8FB7~ JR PD_LP2
|
|
0696+++8FB7~ 0697+++8FB7~ PD_ENV CALL SETENV
|
|
0698+++8FB7~ JR PD_LP2
|
|
0699+++8FB7~ 0700+++8FB7~ PD_ORN CALL SETORN
|
|
0701+++8FB7~ JR PD_LOOP
|
|
0702+++8FB7~ 0703+++8FB7~ PD_ESAM LD (IX-12+CHP.Env_En),A
|
|
0704+++8FB7~ LD (IX-12+CHP.PsInOr),A
|
|
0705+++8FB7~ CALL NZ,SETENV
|
|
0706+++8FB7~ JR PD_SAM_
|
|
0707+++8FB7~ 0708+++8FB7~ PT3PD LD A,(IX-12+CHP.Note)
|
|
0709+++8FB7~ LD (PrNote+1),A
|
|
0710+++8FB7~ LD L,(IX-12+CHP.CrTnSl)
|
|
0711+++8FB7~ LD H,(IX-12+CHP.CrTnSl+1)
|
|
0712+++8FB7~ LD (PrSlide+1),HL
|
|
0713+++8FB7~ 0714+++8FB7~ PD_LOOP LD DE,#2010
|
|
0715+++8FB7~ PD_LP2 LD A,(BC)
|
|
0716+++8FB7~ INC BC
|
|
0717+++8FB7~ ADD A,E
|
|
0718+++8FB7~ JR C,PD_OrSm
|
|
0719+++8FB7~ ADD A,D
|
|
0720+++8FB7~ JR Z,PD_FIN
|
|
0721+++8FB7~ JR C,PD_SAM
|
|
0722+++8FB7~ ADD A,E
|
|
0723+++8FB7~ JR Z,PD_REL
|
|
0724+++8FB7~ JR C,PD_VOL
|
|
0725+++8FB7~ ADD A,E
|
|
0726+++8FB7~ JR Z,PD_EOff
|
|
0727+++8FB7~ JR C,PD_SorE
|
|
0728+++8FB7~ ADD A,96
|
|
0729+++8FB7~ JR C,PD_NOTE
|
|
0730+++8FB7~ ADD A,E
|
|
0731+++8FB7~ JR C,PD_ORN
|
|
0732+++8FB7~ ADD A,D
|
|
0733+++8FB7~ JR C,PD_NOIS
|
|
0734+++8FB7~ ADD A,E
|
|
0735+++8FB7~ JR C,PD_ESAM
|
|
0736+++8FB7~ ADD A,A
|
|
0737+++8FB7~ LD E,A
|
|
0738+++8FB7~ LD HL,(SPCCOMS+#FF20-#2000)&65535
|
|
0739+++8FB7~ ADD HL,DE
|
|
0740+++8FB7~ LD E,(HL)
|
|
0741+++8FB7~ INC HL
|
|
0742+++8FB7~ LD D,(HL)
|
|
0743+++8FB7~ PUSH DE
|
|
0744+++8FB7~ JR PD_LOOP
|
|
0745+++8FB7~ 0746+++8FB7~ PD_NOIS LD (IY-100+VRS.Ns_Base),A
|
|
0747+++8FB7~ JR PD_LP2
|
|
0748+++8FB7~ 0749+++8FB7~ PD_REL RES 0,(IX-12+CHP.Flags)
|
|
0750+++8FB7~ JR PD_RES
|
|
0751+++8FB7~ 0752+++8FB7~ PD_NOTE LD (IX-12+CHP.Note),A
|
|
0753+++8FB7~ SET 0,(IX-12+CHP.Flags)
|
|
0754+++8FB7~ XOR A
|
|
0755+++8FB7~ 0756+++8FB7~ PD_RES LD (PDSP_+1),SP
|
|
0757+++8FB7~ LD SP,IX
|
|
0758+++8FB7~ LD H,A
|
|
0759+++8FB7~ LD L,A
|
|
0760+++8FB7~ PUSH HL
|
|
0761+++8FB7~ PUSH HL
|
|
0762+++8FB7~ PUSH HL
|
|
0763+++8FB7~ PUSH HL
|
|
0764+++8FB7~ PUSH HL
|
|
0765+++8FB7~ PUSH HL
|
|
0766+++8FB7~ PDSP_ LD SP,#3131
|
|
0767+++8FB7~ 0768+++8FB7~ PD_FIN LD A,(IX-12+CHP.NNtSkp)
|
|
0769+++8FB7~ LD (IX-12+CHP.NtSkCn),A
|
|
0770+++8FB7~ RET
|
|
0771+++8FB7~ 0772+++8FB7~ C_PORTM LD A,(BC)
|
|
0773+++8FB7~ INC BC
|
|
0774+++8FB7~ ;SKIP PRECALCULATED TONE DELTA (BECAUSE
|
|
0775+++8FB7~ ;CANNOT BE RIGHT AFTER PT3 COMPILATION)
|
|
0776+++8FB7~ INC BC
|
|
0777+++8FB7~ INC BC
|
|
0778+++8FB7~ EX AF,AF'
|
|
0779+++8FB7~ LD A,(BC) ;SIGNED TONE STEP
|
|
0780+++8FB7~ INC BC
|
|
0781+++8FB7~ LD (LoStep),A
|
|
0782+++8FB7~ LD A,(BC)
|
|
0783+++8FB7~ INC BC
|
|
0784+++8FB7~ AND A
|
|
0785+++8FB7~ EX AF,AF'
|
|
0786+++8FB7~ LD L,(IX-12+CHP.CrTnSl)
|
|
0787+++8FB7~ LD H,(IX-12+CHP.CrTnSl+1)
|
|
0788+++8FB7~ 0789+++8FB7~ ;Set portamento variables
|
|
0790+++8FB7~ ;A - Delay; A' - Hi(Step); ZF' - (A'=0); HL - CrTnSl
|
|
0791+++8FB7~ 0792+++8FB7~ SETPORT RES 2,(IX-12+CHP.Flags)
|
|
0793+++8FB7~ LD (IX-12+CHP.TnSlDl),A
|
|
0794+++8FB7~ LD (IX-12+CHP.TSlCnt),A
|
|
0795+++8FB7~ PUSH HL
|
|
0796+++8FB7~ LD DE,NT_
|
|
0797+++8FB7~ LD A,(IX-12+CHP.Note)
|
|
0798+++8FB7~ LD (IX-12+CHP.SlToNt),A
|
|
0799+++8FB7~ ADD A,A
|
|
0800+++8FB7~ LD L,A
|
|
0801+++8FB7~ LD H,0
|
|
0802+++8FB7~ ADD HL,DE
|
|
0803+++8FB7~ LD A,(HL)
|
|
0804+++8FB7~ INC HL
|
|
0805+++8FB7~ LD H,(HL)
|
|
0806+++8FB7~ LD L,A
|
|
0807+++8FB7~ PUSH HL
|
|
0808+++8FB7~ PrNote LD A,#3E
|
|
0809+++8FB7~ LD (IX-12+CHP.Note),A
|
|
0810+++8FB7~ ADD A,A
|
|
0811+++8FB7~ LD L,A
|
|
0812+++8FB7~ LD H,0
|
|
0813+++8FB7~ ADD HL,DE
|
|
0814+++8FB7~ LD E,(HL)
|
|
0815+++8FB7~ INC HL
|
|
0816+++8FB7~ LD D,(HL)
|
|
0817+++8FB7~ POP HL
|
|
0818+++8FB7~ SBC HL,DE
|
|
0819+++8FB7~ LD (IX-12+CHP.TnDelt),L
|
|
0820+++8FB7~ LD (IX-12+CHP.TnDelt+1),H
|
|
0821+++8FB7~ POP DE
|
|
0822+++8FB7~ Version EQU $+1
|
|
0823+++8FB7~ LD A,#3E
|
|
0824+++8FB7~ CP 6
|
|
0825+++8FB7~ JR C,OLDPRTM ;Old 3xxx for PT v3.5-
|
|
0826+++8FB7~ PrSlide LD DE,#1111
|
|
0827+++8FB7~ LD (IX-12+CHP.CrTnSl),E
|
|
0828+++8FB7~ LD (IX-12+CHP.CrTnSl+1),D
|
|
0829+++8FB7~ LoStep EQU $+1
|
|
0830+++8FB7~ OLDPRTM LD A,#3E
|
|
0831+++8FB7~ EX AF,AF'
|
|
0832+++8FB7~ JR Z,NOSIG
|
|
0833+++8FB7~ EX DE,HL
|
|
0834+++8FB7~ NOSIG SBC HL,DE
|
|
0835+++8FB7~ JP P,SET_STP
|
|
0836+++8FB7~ CPL
|
|
0837+++8FB7~ EX AF,AF'
|
|
0838+++8FB7~ NEG
|
|
0839+++8FB7~ EX AF,AF'
|
|
0840+++8FB7~ SET_STP LD (IX-12+CHP.TSlStp+1),A
|
|
0841+++8FB7~ EX AF,AF'
|
|
0842+++8FB7~ LD (IX-12+CHP.TSlStp),A
|
|
0843+++8FB7~ LD (IX-12+CHP.COnOff),0
|
|
0844+++8FB7~ RET
|
|
0845+++8FB7~ 0846+++8FB7~ C_GLISS SET 2,(IX-12+CHP.Flags)
|
|
0847+++8FB7~ LD A,(BC)
|
|
0848+++8FB7~ INC BC
|
|
0849+++8FB7~ LD (IX-12+CHP.TnSlDl),A
|
|
0850+++8FB7~ AND A
|
|
0851+++8FB7~ JR NZ,GL36
|
|
0852+++8FB7~ LD A,(Version) ;AlCo PT3.7+
|
|
0853+++8FB7~ CP 7
|
|
0854+++8FB7~ SBC A,A
|
|
0855+++8FB7~ INC A
|
|
0856+++8FB7~ GL36 LD (IX-12+CHP.TSlCnt),A
|
|
0857+++8FB7~ LD A,(BC)
|
|
0858+++8FB7~ INC BC
|
|
0859+++8FB7~ EX AF,AF'
|
|
0860+++8FB7~ LD A,(BC)
|
|
0861+++8FB7~ INC BC
|
|
0862+++8FB7~ JR SET_STP
|
|
0863+++8FB7~ 0864+++8FB7~ C_SMPOS LD A,(BC)
|
|
0865+++8FB7~ INC BC
|
|
0866+++8FB7~ LD (IX-12+CHP.PsInSm),A
|
|
0867+++8FB7~ RET
|
|
0868+++8FB7~ 0869+++8FB7~ C_ORPOS LD A,(BC)
|
|
0870+++8FB7~ INC BC
|
|
0871+++8FB7~ LD (IX-12+CHP.PsInOr),A
|
|
0872+++8FB7~ RET
|
|
0873+++8FB7~ 0874+++8FB7~ C_VIBRT LD A,(BC)
|
|
0875+++8FB7~ INC BC
|
|
0876+++8FB7~ LD (IX-12+CHP.OnOffD),A
|
|
0877+++8FB7~ LD (IX-12+CHP.COnOff),A
|
|
0878+++8FB7~ LD A,(BC)
|
|
0879+++8FB7~ INC BC
|
|
0880+++8FB7~ LD (IX-12+CHP.OffOnD),A
|
|
0881+++8FB7~ XOR A
|
|
0882+++8FB7~ LD (IX-12+CHP.TSlCnt),A
|
|
0883+++8FB7~ LD (IX-12+CHP.CrTnSl),A
|
|
0884+++8FB7~ LD (IX-12+CHP.CrTnSl+1),A
|
|
0885+++8FB7~ RET
|
|
0886+++8FB7~ 0887+++8FB7~ C_ENGLS LD A,(BC)
|
|
0888+++8FB7~ INC BC
|
|
0889+++8FB7~ LD (IY-100+VRS.Env_Del),A
|
|
0890+++8FB7~ LD (IY-100+VRS.CurEDel),A
|
|
0891+++8FB7~ LD A,(BC)
|
|
0892+++8FB7~ INC BC
|
|
0893+++8FB7~ LD L,A
|
|
0894+++8FB7~ LD A,(BC)
|
|
0895+++8FB7~ INC BC
|
|
0896+++8FB7~ LD H,A
|
|
0897+++8FB7~ LD (IY-100+VRS.ESldAdd),L
|
|
0898+++8FB7~ LD (IY-100+VRS.ESldAdd+1),H
|
|
0899+++8FB7~ RET
|
|
0900+++8FB7~ 0901+++8FB7~ C_DELAY LD A,(BC)
|
|
0902+++8FB7~ INC BC
|
|
0903+++8FB7~ LD (IY-100+VRS.Delay),A
|
|
0904+++8FB7~ LD HL,VARS2+VRS.ModNum ;if AlCo_TS
|
|
0905+++8FB7~ BIT 1,(HL)
|
|
0906+++8FB7~ RET Z
|
|
0907+++8FB7~ LD (VARS1+VRS.Delay),A
|
|
0908+++8FB7~ LD (VARS1+VRS.DelyCnt),A
|
|
0909+++8FB7~ LD (VARS2+VRS.Delay),A
|
|
0910+++8FB7~ RET
|
|
0911+++8FB7~
|
|
0912+++8FB7~ SETENV LD (IX-12+CHP.Env_En),E
|
|
0913+++8FB7~ LD (IY-100+VRS.AYREGS+EnvTp),A
|
|
0914+++8FB7~ LD A,(BC)
|
|
0915+++8FB7~ INC BC
|
|
0916+++8FB7~ LD H,A
|
|
0917+++8FB7~ LD A,(BC)
|
|
0918+++8FB7~ INC BC
|
|
0919+++8FB7~ LD L,A
|
|
0920+++8FB7~ CALL SETENBS
|
|
0921+++8FB7~ XOR A
|
|
0922+++8FB7~ LD (IX-12+CHP.PsInOr),A
|
|
0923+++8FB7~ LD (IY-100+VRS.CurEDel),A
|
|
0924+++8FB7~ LD H,A
|
|
0925+++8FB7~ LD L,A
|
|
0926+++8FB7~ JP SETESLD
|
|
0927+++8FB7~ 0928+++8FB7~ SETORN ADD A,A
|
|
0929+++8FB7~ LD E,A
|
|
0930+++8FB7~ LD D,0
|
|
0931+++8FB7~ LD (IX-12+CHP.PsInOr),D
|
|
0932+++8FB7~ LD L,(IY-100+VRS.OrnPtrs)
|
|
0933+++8FB7~ LD H,(IY-100+VRS.OrnPtrs+1)
|
|
0934+++8FB7~ ADD HL,DE
|
|
0935+++8FB7~ LD E,(HL)
|
|
0936+++8FB7~ INC HL
|
|
0937+++8FB7~ LD D,(HL)
|
|
0938+++8FB7~ LD L,(IY-100+VRS.MODADDR)
|
|
0939+++8FB7~ LD H,(IY-100+VRS.MODADDR+1)
|
|
0940+++8FB7~ ADD HL,DE
|
|
0941+++8FB7~ LD (IX-12+CHP.OrnPtr),L
|
|
0942+++8FB7~ LD (IX-12+CHP.OrnPtr+1),H
|
|
0943+++8FB7~ C_NOP RET
|
|
0944+++8FB7~ 0945+++8FB7~ SETSAM ADD A,A
|
|
0946+++8FB7~ LD E,A
|
|
0947+++8FB7~ LD D,0
|
|
0948+++8FB7~ LD L,(IY-100+VRS.SamPtrs);
|
|
0949+++8FB7~ LD H,(IY-100+VRS.SamPtrs+1);
|
|
0950+++8FB7~ ADD HL,DE
|
|
0951+++8FB7~ LD E,(HL)
|
|
0952+++8FB7~ INC HL
|
|
0953+++8FB7~ LD D,(HL)
|
|
0954+++8FB7~ LD L,(IY-100+VRS.MODADDR)
|
|
0955+++8FB7~ LD H,(IY-100+VRS.MODADDR+1)
|
|
0956+++8FB7~ ADD HL,DE
|
|
0957+++8FB7~ LD (IX-12+CHP.SamPtr),L
|
|
0958+++8FB7~ LD (IX-12+CHP.SamPtr+1),H
|
|
0959+++8FB7~ RET
|
|
0960+++8FB7~ 0961+++8FB7~ ;ALL 16 ADDRESSES TO PROTECT FROM BROKEN PT3 MODULES
|
|
0962+++8FB7~ SPCCOMS DW C_NOP
|
|
0963+++8FB7~ DW C_GLISS
|
|
0964+++8FB7~ DW C_PORTM
|
|
0965+++8FB7~ DW C_SMPOS
|
|
0966+++8FB7~ DW C_ORPOS
|
|
0967+++8FB7~ DW C_VIBRT
|
|
0968+++8FB7~ DW C_NOP
|
|
0969+++8FB7~ DW C_NOP
|
|
0970+++8FB7~ DW C_ENGLS
|
|
0971+++8FB7~ DW C_DELAY
|
|
0972+++8FB7~ DW C_NOP
|
|
0973+++8FB7~ DW C_NOP
|
|
0974+++8FB7~ DW C_NOP
|
|
0975+++8FB7~ DW C_NOP
|
|
0976+++8FB7~ DW C_NOP
|
|
0977+++8FB7~ DW C_NOP
|
|
0978+++8FB7~ 0979+++8FB7~ CHREGS CALL GETIX
|
|
0980+++8FB7~ XOR A
|
|
0981+++8FB7~ LD (Ampl),A
|
|
0982+++8FB7~ BIT 0,(IX+CHP.Flags)
|
|
0983+++8FB7~ PUSH HL
|
|
0984+++8FB7~ JP Z,CH_EXIT
|
|
0985+++8FB7~ LD (CSP_+1),SP
|
|
0986+++8FB7~ LD L,(IX+CHP.OrnPtr)
|
|
0987+++8FB7~ LD H,(IX+CHP.OrnPtr+1)
|
|
0988+++8FB7~ LD SP,HL
|
|
0989+++8FB7~ POP DE
|
|
0990+++8FB7~ LD H,A
|
|
0991+++8FB7~ LD A,(IX+CHP.PsInOr)
|
|
0992+++8FB7~ LD L,A
|
|
0993+++8FB7~ ADD HL,SP
|
|
0994+++8FB7~ INC A
|
|
0995+++8FB7~ ;PT2 PT3
|
|
0996+++8FB7~ OrnCP INC A ;CP E CP D
|
|
0997+++8FB7~ JR C,CH_ORPS
|
|
0998+++8FB7~ OrnLD DB 1 ;LD A,D LD A,E
|
|
0999+++8FB7~ CH_ORPS LD (IX+CHP.PsInOr),A
|
|
1000+++8FB7~ LD A,(IX+CHP.Note)
|
|
1001+++8FB7~ ADD A,(HL)
|
|
1002+++8FB7~ JP P,CH_NTP
|
|
1003+++8FB7~ XOR A
|
|
1004+++8FB7~ CH_NTP CP 96
|
|
1005+++8FB7~ JR C,CH_NOK
|
|
1006+++8FB7~ LD A,95
|
|
1007+++8FB7~ CH_NOK ADD A,A
|
|
1008+++8FB7~ EX AF,AF'
|
|
1009+++8FB7~ LD L,(IX+CHP.SamPtr)
|
|
1010+++8FB7~ LD H,(IX+CHP.SamPtr+1)
|
|
1011+++8FB7~ LD SP,HL
|
|
1012+++8FB7~ POP DE
|
|
1013+++8FB7~ LD H,0
|
|
1014+++8FB7~ LD A,(IX+CHP.PsInSm)
|
|
1015+++8FB7~ LD B,A
|
|
1016+++8FB7~ ADD A,A
|
|
1017+++8FB7~ SamClc2 ADD A,A ;or ADD A,B for PT2
|
|
1018+++8FB7~ LD L,A
|
|
1019+++8FB7~ ADD HL,SP
|
|
1020+++8FB7~ LD SP,HL
|
|
1021+++8FB7~ LD A,B
|
|
1022+++8FB7~ INC A
|
|
1023+++8FB7~ ;PT2 PT3
|
|
1024+++8FB7~ SamCP INC A ;CP E CP D
|
|
1025+++8FB7~ JR C,CH_SMPS
|
|
1026+++8FB7~ SamLD DB 1 ;LD A,D LD A,E
|
|
1027+++8FB7~ CH_SMPS LD (IX+CHP.PsInSm),A
|
|
1028+++8FB7~ POP BC
|
|
1029+++8FB7~ POP HL
|
|
1030+++8FB7~ 1031+++8FB7~ ;Convert PT2 sample to PT3
|
|
1032+++8FB7~ ;PT2 PT3
|
|
1033+++8FB7~ SamCnv POP HL ;BIT 2,C JR e_
|
|
1034+++8FB7~ POP HL
|
|
1035+++8FB7~ LD H,B
|
|
1036+++8FB7~ JR NZ,$+8
|
|
1037+++8FB7~ EX DE,HL
|
|
1038+++8FB7~ AND A
|
|
1039+++8FB7~ SBC HL,HL
|
|
1040+++8FB7~ SBC HL,DE
|
|
1041+++8FB7~ LD D,C
|
|
1042+++8FB7~ RR C
|
|
1043+++8FB7~ SBC A,A
|
|
1044+++8FB7~ CPL
|
|
1045+++8FB7~ AND #3E
|
|
1046+++8FB7~ RR C
|
|
1047+++8FB7~ RR B
|
|
1048+++8FB7~ AND C
|
|
1049+++8FB7~ LD C,A
|
|
1050+++8FB7~ LD A,B
|
|
1051+++8FB7~ RRA
|
|
1052+++8FB7~ RRA
|
|
1053+++8FB7~ RR D
|
|
1054+++8FB7~ RRA
|
|
1055+++8FB7~ AND #9F
|
|
1056+++8FB7~ LD B,A
|
|
1057+++8FB7~ 1058+++8FB7~ e_ LD E,(IX+CHP.TnAcc)
|
|
1059+++8FB7~ LD D,(IX+CHP.TnAcc+1)
|
|
1060+++8FB7~ ADD HL,DE
|
|
1061+++8FB7~ BIT 6,B
|
|
1062+++8FB7~ JR Z,CH_NOAC
|
|
1063+++8FB7~ LD (IX+CHP.TnAcc),L
|
|
1064+++8FB7~ LD (IX+CHP.TnAcc+1),H
|
|
1065+++8FB7~ CH_NOAC EX DE,HL
|
|
1066+++8FB7~ EX AF,AF'
|
|
1067+++8FB7~ ADD A,NT_&255
|
|
1068+++8FB7~ LD L,A
|
|
1069+++8FB7~ ADC A,NT_/256
|
|
1070+++8FB7~ SUB L
|
|
1071+++8FB7~ LD H,A
|
|
1072+++8FB7~ LD SP,HL
|
|
1073+++8FB7~ POP HL
|
|
1074+++8FB7~ ADD HL,DE
|
|
1075+++8FB7~ LD E,(IX+CHP.CrTnSl)
|
|
1076+++8FB7~ LD D,(IX+CHP.CrTnSl+1)
|
|
1077+++8FB7~ ADD HL,DE
|
|
1078+++8FB7~ CSP_ LD SP,#3131
|
|
1079+++8FB7~ EX (SP),HL
|
|
1080+++8FB7~ XOR A
|
|
1081+++8FB7~ OR (IX+CHP.TSlCnt)
|
|
1082+++8FB7~ JR Z,CH_AMP
|
|
1083+++8FB7~ DEC (IX+CHP.TSlCnt)
|
|
1084+++8FB7~ JR NZ,CH_AMP
|
|
1085+++8FB7~ LD A,(IX+CHP.TnSlDl)
|
|
1086+++8FB7~ LD (IX+CHP.TSlCnt),A
|
|
1087+++8FB7~ LD L,(IX+CHP.TSlStp)
|
|
1088+++8FB7~ LD H,(IX+CHP.TSlStp+1)
|
|
1089+++8FB7~ LD A,H
|
|
1090+++8FB7~ ADD HL,DE
|
|
1091+++8FB7~ LD (IX+CHP.CrTnSl),L
|
|
1092+++8FB7~ LD (IX+CHP.CrTnSl+1),H
|
|
1093+++8FB7~ BIT 2,(IX+CHP.Flags)
|
|
1094+++8FB7~ JR NZ,CH_AMP
|
|
1095+++8FB7~ LD E,(IX+CHP.TnDelt)
|
|
1096+++8FB7~ LD D,(IX+CHP.TnDelt+1)
|
|
1097+++8FB7~ AND A
|
|
1098+++8FB7~ JR Z,CH_STPP
|
|
1099+++8FB7~ EX DE,HL
|
|
1100+++8FB7~ CH_STPP SBC HL,DE
|
|
1101+++8FB7~ JP M,CH_AMP
|
|
1102+++8FB7~ LD A,(IX+CHP.SlToNt)
|
|
1103+++8FB7~ LD (IX+CHP.Note),A
|
|
1104+++8FB7~ XOR A
|
|
1105+++8FB7~ LD (IX+CHP.TSlCnt),A
|
|
1106+++8FB7~ LD (IX+CHP.CrTnSl),A
|
|
1107+++8FB7~ LD (IX+CHP.CrTnSl+1),A
|
|
1108+++8FB7~ CH_AMP LD A,(IX+CHP.CrAmSl)
|
|
1109+++8FB7~ BIT 7,C
|
|
1110+++8FB7~ JR Z,CH_NOAM
|
|
1111+++8FB7~ BIT 6,C
|
|
1112+++8FB7~ JR Z,CH_AMIN
|
|
1113+++8FB7~ CP 15
|
|
1114+++8FB7~ JR Z,CH_NOAM
|
|
1115+++8FB7~ INC A
|
|
1116+++8FB7~ JR CH_SVAM
|
|
1117+++8FB7~ CH_AMIN CP -15
|
|
1118+++8FB7~ JR Z,CH_NOAM
|
|
1119+++8FB7~ DEC A
|
|
1120+++8FB7~ CH_SVAM LD (IX+CHP.CrAmSl),A
|
|
1121+++8FB7~ CH_NOAM LD L,A
|
|
1122+++8FB7~ LD A,B
|
|
1123+++8FB7~ AND 15
|
|
1124+++8FB7~ ADD A,L
|
|
1125+++8FB7~ JP P,CH_APOS
|
|
1126+++8FB7~ XOR A
|
|
1127+++8FB7~ CH_APOS CP 16
|
|
1128+++8FB7~ JR C,CH_VOL
|
|
1129+++8FB7~ LD A,15
|
|
1130+++8FB7~ CH_VOL OR (IX+CHP.Volume)
|
|
1131+++8FB7~ ADD A,VT_&255
|
|
1132+++8FB7~ LD L,A
|
|
1133+++8FB7~ ADC A,VT_/256
|
|
1134+++8FB7~ SUB L
|
|
1135+++8FB7~ LD H,A
|
|
1136+++8FB7~ LD A,(HL)
|
|
1137+++8FB7~ CH_ENV BIT 0,C
|
|
1138+++8FB7~ JR NZ,CH_NOEN
|
|
1139+++8FB7~ OR (IX+CHP.Env_En)
|
|
1140+++8FB7~ CH_NOEN LD (Ampl),A
|
|
1141+++8FB7~ BIT 7,B
|
|
1142+++8FB7~ LD A,C
|
|
1143+++8FB7~ JR Z,NO_ENSL
|
|
1144+++8FB7~ RLA
|
|
1145+++8FB7~ RLA
|
|
1146+++8FB7~ SRA A
|
|
1147+++8FB7~ SRA A
|
|
1148+++8FB7~ SRA A
|
|
1149+++8FB7~ ADD A,(IX+CHP.CrEnSl) ;SEE COMMENT BELOW
|
|
1150+++8FB7~ BIT 5,B
|
|
1151+++8FB7~ JR Z,NO_ENAC
|
|
1152+++8FB7~ LD (IX+CHP.CrEnSl),A
|
|
1153+++8FB7~ NO_ENAC ADD A,(IY-100+VRS.AddToEn) ;BUG IN PT3 - NEED WORD HERE
|
|
1154+++8FB7~ LD (IY-100+VRS.AddToEn),A
|
|
1155+++8FB7~ JR CH_MIX
|
|
1156+++8FB7~ NO_ENSL RRA
|
|
1157+++8FB7~ ADD A,(IX+CHP.CrNsSl)
|
|
1158+++8FB7~ LD (IY-100+VRS.AddToNs),A
|
|
1159+++8FB7~ BIT 5,B
|
|
1160+++8FB7~ JR Z,CH_MIX
|
|
1161+++8FB7~ LD (IX+CHP.CrNsSl),A
|
|
1162+++8FB7~ CH_MIX LD A,B
|
|
1163+++8FB7~ RRA
|
|
1164+++8FB7~ AND #48
|
|
1165+++8FB7~ CH_EXIT OR (IY-100+VRS.AYREGS+Mixer)
|
|
1166+++8FB7~ RRCA
|
|
1167+++8FB7~ LD (IY-100+VRS.AYREGS+Mixer),A
|
|
1168+++8FB7~ POP HL
|
|
1169+++8FB7~ XOR A
|
|
1170+++8FB7~ OR (IX+CHP.COnOff)
|
|
1171+++8FB7~ RET Z
|
|
1172+++8FB7~ DEC (IX+CHP.COnOff)
|
|
1173+++8FB7~ RET NZ
|
|
1174+++8FB7~ XOR (IX+CHP.Flags)
|
|
1175+++8FB7~ LD (IX+CHP.Flags),A
|
|
1176+++8FB7~ RRA
|
|
1177+++8FB7~ LD A,(IX+CHP.OnOffD)
|
|
1178+++8FB7~ JR C,CH_ONDL
|
|
1179+++8FB7~ LD A,(IX+CHP.OffOnD)
|
|
1180+++8FB7~ CH_ONDL LD (IX+CHP.COnOff),A
|
|
1181+++8FB7~ RET
|
|
1182+++8FB7~ 1183+++8FB7~ PLAY_ XOR A
|
|
1184+++8FB7~ LD (IY-100+VRS.AddToEn),A
|
|
1185+++8FB7~ LD (IY-100+VRS.AYREGS+Mixer),A
|
|
1186+++8FB7~ DEC A
|
|
1187+++8FB7~ LD (IY-100+VRS.AYREGS+EnvTp),A
|
|
1188+++8FB7~ DEC (IY-100+VRS.DelyCnt)
|
|
1189+++8FB7~ JP NZ,PL2
|
|
1190+++8FB7~ DEC (IY-100+VRS.ChanA+CHP.NtSkCn)
|
|
1191+++8FB7~ JR NZ,PL1B
|
|
1192+++8FB7~ LD C,(IY-100+VRS.AdInPtA)
|
|
1193+++8FB7~ LD B,(IY-100+VRS.AdInPtA+1)
|
|
1194+++8FB7~ LD A,(BC)
|
|
1195+++8FB7~ AND A
|
|
1196+++8FB7~ JR NZ,PL1A
|
|
1197+++8FB7~ LD D,A
|
|
1198+++8FB7~ LD (IY-100+VRS.Ns_Base),A
|
|
1199+++8FB7~ LD L,(IY-100+VRS.CrPsPtr)
|
|
1200+++8FB7~ LD H,(IY-100+VRS.CrPsPtr+1)
|
|
1201+++8FB7~ INC HL
|
|
1202+++8FB7~ LD A,(HL)
|
|
1203+++8FB7~ INC A
|
|
1204+++8FB7~ JR NZ,PLNLP
|
|
1205+++8FB7~ 1206+++8FB7~ IF LoopChecker
|
|
1207+++8FB7~ CALL CHECKLP
|
|
1208+++8FB7~ ENDIF
|
|
1209+++8FB7~ 1210+++8FB7~ LD L,(IY-100+VRS.LPosPtr)
|
|
1211+++8FB7~ LD H,(IY-100+VRS.LPosPtr+1)
|
|
1212+++8FB7~ LD A,(HL)
|
|
1213+++8FB7~ INC A
|
|
1214+++8FB7~ PLNLP CALL SETCPPT
|
|
1215+++8FB7~ DEC A
|
|
1216+++8FB7~ BIT 1,(IY-100+VRS.ModNum)
|
|
1217+++8FB7~ JR Z,NoAlCo
|
|
1218+++8FB7~ TSSub EQU $+1
|
|
1219+++8FB7~ SUB #D6
|
|
1220+++8FB7~ CPL
|
|
1221+++8FB7~ NoAlCo
|
|
1222+++8FB7~ ;PT2 PT3
|
|
1223+++8FB7~ PsCalc DEC A ;ADD A,A NOP
|
|
1224+++8FB7~ DEC A ;ADD A,(HL) NOP
|
|
1225+++8FB7~ ADD A,A
|
|
1226+++8FB7~ LD E,A
|
|
1227+++8FB7~ RL D
|
|
1228+++8FB7~ 1229+++8FB7~ IF CurPosCounter
|
|
1230+++8FB7~ LD A,L
|
|
1231+++8FB7~ SUB (IY-100+VRS.PosSub)
|
|
1232+++8FB7~ LD (IY-100+VRS.CurPos),A
|
|
1233+++8FB7~ ENDIF
|
|
1234+++8FB7~ 1235+++8FB7~ LD L,(IY-100+VRS.PatsPtr)
|
|
1236+++8FB7~ LD H,(IY-100+VRS.PatsPtr+1)
|
|
1237+++8FB7~ ADD HL,DE
|
|
1238+++8FB7~ LD E,(IY-100+VRS.MODADDR)
|
|
1239+++8FB7~ LD D,(IY-100+VRS.MODADDR+1)
|
|
1240+++8FB7~ LD (PSP_+1),SP
|
|
1241+++8FB7~ LD SP,HL
|
|
1242+++8FB7~ POP HL
|
|
1243+++8FB7~ ADD HL,DE
|
|
1244+++8FB7~ LD B,H
|
|
1245+++8FB7~ LD C,L
|
|
1246+++8FB7~ POP HL
|
|
1247+++8FB7~ ADD HL,DE
|
|
1248+++8FB7~ LD (IY-100+VRS.AdInPtB),L
|
|
1249+++8FB7~ LD (IY-100+VRS.AdInPtB+1),H
|
|
1250+++8FB7~ POP HL
|
|
1251+++8FB7~ ADD HL,DE
|
|
1252+++8FB7~ LD (IY-100+VRS.AdInPtC),L
|
|
1253+++8FB7~ LD (IY-100+VRS.AdInPtC+1),H
|
|
1254+++8FB7~ PSP_ LD SP,#3131
|
|
1255+++8FB7~ PL1A LD DE,VRS.ChanA+12-100
|
|
1256+++8FB7~ CALL PTDECOD
|
|
1257+++8FB7~ LD (IY-100+VRS.AdInPtA),C
|
|
1258+++8FB7~ LD (IY-100+VRS.AdInPtA+1),B
|
|
1259+++8FB7~ 1260+++8FB7~ PL1B DEC (IY-100+VRS.ChanB+CHP.NtSkCn)
|
|
1261+++8FB7~ JR NZ,PL1C
|
|
1262+++8FB7~ LD DE,VRS.ChanB+12-100
|
|
1263+++8FB7~ LD C,(IY-100+VRS.AdInPtB)
|
|
1264+++8FB7~ LD B,(IY-100+VRS.AdInPtB+1)
|
|
1265+++8FB7~ CALL PTDECOD
|
|
1266+++8FB7~ LD (IY-100+VRS.AdInPtB),C
|
|
1267+++8FB7~ LD (IY-100+VRS.AdInPtB+1),B
|
|
1268+++8FB7~ 1269+++8FB7~ PL1C DEC (IY-100+VRS.ChanC+CHP.NtSkCn)
|
|
1270+++8FB7~ JR NZ,PL1D
|
|
1271+++8FB7~ LD DE,VRS.ChanC+12-100
|
|
1272+++8FB7~ LD C,(IY-100+VRS.AdInPtC)
|
|
1273+++8FB7~ LD B,(IY-100+VRS.AdInPtC+1)
|
|
1274+++8FB7~ CALL PTDECOD
|
|
1275+++8FB7~ LD (IY-100+VRS.AdInPtC),C
|
|
1276+++8FB7~ LD (IY-100+VRS.AdInPtC+1),B
|
|
1277+++8FB7~ 1278+++8FB7~ PL1D LD A,(IY-100+VRS.Delay)
|
|
1279+++8FB7~ LD (IY-100+VRS.DelyCnt),A
|
|
1280+++8FB7~ 1281+++8FB7~ PL2 LD DE,VRS.ChanA-100
|
|
1282+++8FB7~ LD L,(IY-100+VRS.AYREGS+TonA)
|
|
1283+++8FB7~ LD H,(IY-100+VRS.AYREGS+TonA+1)
|
|
1284+++8FB7~ CALL CHREGS
|
|
1285+++8FB7~ LD (IY-100+VRS.AYREGS+TonA),L
|
|
1286+++8FB7~ LD (IY-100+VRS.AYREGS+TonA+1),H
|
|
1287+++8FB7~ Ampl EQU $+1
|
|
1288+++8FB7~ LD A,#3E
|
|
1289+++8FB7~ LD (IY-100+VRS.AYREGS+AmplA),A
|
|
1290+++8FB7~ LD DE,VRS.ChanB-100
|
|
1291+++8FB7~ LD L,(IY-100+VRS.AYREGS+TonB)
|
|
1292+++8FB7~ LD H,(IY-100+VRS.AYREGS+TonB+1)
|
|
1293+++8FB7~ CALL CHREGS
|
|
1294+++8FB7~ LD (IY-100+VRS.AYREGS+TonB),L
|
|
1295+++8FB7~ LD (IY-100+VRS.AYREGS+TonB+1),H
|
|
1296+++8FB7~ LD A,(Ampl)
|
|
1297+++8FB7~ LD (IY-100+VRS.AYREGS+AmplB),A
|
|
1298+++8FB7~ LD DE,VRS.ChanC-100
|
|
1299+++8FB7~ LD L,(IY-100+VRS.AYREGS+TonC)
|
|
1300+++8FB7~ LD H,(IY-100+VRS.AYREGS+TonC+1)
|
|
1301+++8FB7~ CALL CHREGS
|
|
1302+++8FB7~ LD (IY-100+VRS.AYREGS+TonC),L
|
|
1303+++8FB7~ LD (IY-100+VRS.AYREGS+TonC+1),H
|
|
1304+++8FB7~ LD A,(Ampl)
|
|
1305+++8FB7~ LD (IY-100+VRS.AYREGS+AmplC),A
|
|
1306+++8FB7~ 1307+++8FB7~ LD A,(IY-100+VRS.Ns_Base)
|
|
1308+++8FB7~ ADD (IY-100+VRS.AddToNs)
|
|
1309+++8FB7~ LD (IY-100+VRS.AYREGS+Noise),A
|
|
1310+++8FB7~ 1311+++8FB7~ LD A,(IY-100+VRS.AddToEn)
|
|
1312+++8FB7~ LD E,A
|
|
1313+++8FB7~ ADD A,A
|
|
1314+++8FB7~ SBC A,A
|
|
1315+++8FB7~ LD D,A
|
|
1316+++8FB7~ LD L,(IY-100+VRS.EnvBase)
|
|
1317+++8FB7~ LD H,(IY-100+VRS.EnvBase+1)
|
|
1318+++8FB7~ ADD HL,DE
|
|
1319+++8FB7~ LD E,(IY-100+VRS.CurESld)
|
|
1320+++8FB7~ LD D,(IY-100+VRS.CurESld+1)
|
|
1321+++8FB7~ ADD HL,DE
|
|
1322+++8FB7~ LD (IY-100+VRS.AYREGS+Env),L
|
|
1323+++8FB7~ LD (IY-100+VRS.AYREGS+Env+1),H
|
|
1324+++8FB7~ 1325+++8FB7~ XOR A
|
|
1326+++8FB7~ OR (IY-100+VRS.CurEDel)
|
|
1327+++8FB7~ RET Z
|
|
1328+++8FB7~ DEC (IY-100+VRS.CurEDel)
|
|
1329+++8FB7~ RET NZ
|
|
1330+++8FB7~ LD A,(IY-100+VRS.Env_Del)
|
|
1331+++8FB7~ LD (IY-100+VRS.CurEDel),A
|
|
1332+++8FB7~ LD L,(IY-100+VRS.ESldAdd)
|
|
1333+++8FB7~ LD H,(IY-100+VRS.ESldAdd+1)
|
|
1334+++8FB7~ ADD HL,DE
|
|
1335+++8FB7~ JP SETESLD
|
|
1336+++8FB7~ 1337+++8FB7~ PLAY LD IY,VARS1+100
|
|
1338+++8FB7~ CALL PLAY_
|
|
1339+++8FB7~ LD A,(is_ts)
|
|
1340+++8FB7~ AND A
|
|
1341+++8FB7~ JR Z,PL_nts
|
|
1342+++8FB7~ LD IY,VARS2+100
|
|
1343+++8FB7~ CALL PLAY_
|
|
1344+++8FB7~ PL_nts
|
|
1345+++8FB7~ IF Basic
|
|
1346+++8FB7~ LD IY,#5C3A
|
|
1347+++8FB7~ ENDIF
|
|
1348+++8FB7~ 1349+++8FB7~ ROUT LD BC,#FFFD
|
|
1350+++8FB7~ LD A,(is_ts)
|
|
1351+++8FB7~ AND A
|
|
1352+++8FB7~ IFDEF ONtfm
|
|
1353+++8FB7~ LD L,#F9
|
|
1354+++8FB7~ OUT (C),L
|
|
1355+++8FB7~ ELSE
|
|
1356+++8FB7~ JR Z,r_nts ;keep old standard
|
|
1357+++8FB7~ OUT (C),B
|
|
1358+++8FB7~ ENDIF
|
|
1359+++8FB7~ r_nts EX AF,AF'
|
|
1360+++8FB7~ 1361+++8FB7~ IF ACBBAC
|
|
1362+++8FB7~ LD IX,VARS1+VRS.AYREGS
|
|
1363+++8FB7~ ELSE
|
|
1364+++8FB7~ LD HL,VARS1+VRS.AYREGS
|
|
1365+++8FB7~ ENDIF
|
|
1366+++8FB7~ 1367+++8FB7~ CALL ROUT_
|
|
1368+++8FB7~ EX AF,AF'
|
|
1369+++8FB7~ RET Z
|
|
1370+++8FB7~ LD B,D
|
|
1371+++8FB7~ 1372+++8FB7~ IFDEF ONtfm
|
|
1373+++8FB7~ LD A,#F8
|
|
1374+++8FB7~ ELSE
|
|
1375+++8FB7~ CPL
|
|
1376+++8FB7~ ENDIF
|
|
1377+++8FB7~ OUT (C),A
|
|
1378+++8FB7~ 1379+++8FB7~ IF ACBBAC
|
|
1380+++8FB7~ LD IX,VARS2+VRS.AYREGS
|
|
1381+++8FB7~ ELSE
|
|
1382+++8FB7~ LD HL,VARS2+VRS.AYREGS
|
|
1383+++8FB7~ ENDIF
|
|
1384+++8FB7~ 1385+++8FB7~ ROUT_
|
|
1386+++8FB7~ IF ACBBAC
|
|
1387+++8FB7~ LD A,(SETUP)
|
|
1388+++8FB7~ AND 12
|
|
1389+++8FB7~ JR Z,ABC
|
|
1390+++8FB7~ ADD A,CHTABLE
|
|
1391+++8FB7~ LD E,A
|
|
1392+++8FB7~ ADC A,CHTABLE/256
|
|
1393+++8FB7~ SUB E
|
|
1394+++8FB7~ LD D,A
|
|
1395+++8FB7~ LD B,0
|
|
1396+++8FB7~ PUSH IX
|
|
1397+++8FB7~ POP HL
|
|
1398+++8FB7~ LD A,(DE)
|
|
1399+++8FB7~ INC DE
|
|
1400+++8FB7~ LD C,A
|
|
1401+++8FB7~ ADD HL,BC
|
|
1402+++8FB7~ LD A,(IX+TonB)
|
|
1403+++8FB7~ LD C,(HL)
|
|
1404+++8FB7~ LD (IX+TonB),C
|
|
1405+++8FB7~ LD (HL),A
|
|
1406+++8FB7~ INC HL
|
|
1407+++8FB7~ LD A,(IX+TonB+1)
|
|
1408+++8FB7~ LD C,(HL)
|
|
1409+++8FB7~ LD (IX+TonB+1),C
|
|
1410+++8FB7~ LD (HL),A
|
|
1411+++8FB7~ LD A,(DE)
|
|
1412+++8FB7~ INC DE
|
|
1413+++8FB7~ LD C,A
|
|
1414+++8FB7~ ADD HL,BC
|
|
1415+++8FB7~ LD A,(IX+AmplB)
|
|
1416+++8FB7~ LD C,(HL)
|
|
1417+++8FB7~ LD (IX+AmplB),C
|
|
1418+++8FB7~ LD (HL),A
|
|
1419+++8FB7~ LD A,(DE)
|
|
1420+++8FB7~ INC DE
|
|
1421+++8FB7~ LD (RxCA1),A
|
|
1422+++8FB7~ XOR 8
|
|
1423+++8FB7~ LD (RxCA2),A
|
|
1424+++8FB7~ LD A,(DE)
|
|
1425+++8FB7~ AND (IX+Mixer)
|
|
1426+++8FB7~ LD E,A
|
|
1427+++8FB7~ LD A,(IX+Mixer)
|
|
1428+++8FB7~ RxCA1 DB #E6
|
|
1429+++8FB7~ AND %010010
|
|
1430+++8FB7~ OR E
|
|
1431+++8FB7~ LD E,A
|
|
1432+++8FB7~ LD A,(IX+Mixer)
|
|
1433+++8FB7~ AND %010010
|
|
1434+++8FB7~ RxCA2 OR E
|
|
1435+++8FB7~ OR E
|
|
1436+++8FB7~ LD (IX+Mixer),A
|
|
1437+++8FB7~ ABC
|
|
1438+++8FB7~ ENDIF
|
|
1439+++8FB7~ 1440+++8FB7~ XOR A
|
|
1441+++8FB7~ LD DE,#FFBF
|
|
1442+++8FB7~ 1443+++8FB7~ IF ACBBAC
|
|
1444+++8FB7~ LD BC,#FFFD
|
|
1445+++8FB7~ PUSH IX
|
|
1446+++8FB7~ POP HL
|
|
1447+++8FB7~ ENDIF
|
|
1448+++8FB7~ 1449+++8FB7~ LOUT
|
|
1450+++8FB7~ IFDEF ONtfm
|
|
1451+++8FB7~ INF
|
|
1452+++8FB7~ JP M,$-2
|
|
1453+++8FB7~ ENDIF
|
|
1454+++8FB7~ OUT (C),A
|
|
1455+++8FB7~ IFDEF ONtfm
|
|
1456+++8FB7~ INF
|
|
1457+++8FB7~ JP M,$-2
|
|
1458+++8FB7~ ENDIF
|
|
1459+++8FB7~ LD B,E
|
|
1460+++8FB7~ OUTI
|
|
1461+++8FB7~ LD B,D
|
|
1462+++8FB7~ INC A
|
|
1463+++8FB7~ CP 13
|
|
1464+++8FB7~ JR NZ,LOUT
|
|
1465+++8FB7~ IFDEF ONtfm
|
|
1466+++8FB7~ INF
|
|
1467+++8FB7~ JP M,$-2
|
|
1468+++8FB7~ ENDIF
|
|
1469+++8FB7~ OUT (C),A
|
|
1470+++8FB7~ LD A,(HL)
|
|
1471+++8FB7~ AND A
|
|
1472+++8FB7~ RET M
|
|
1473+++8FB7~ IFDEF ONtfm
|
|
1474+++8FB7~ INF
|
|
1475+++8FB7~ JP M,$-2
|
|
1476+++8FB7~ ENDIF
|
|
1477+++8FB7~ LD B,E
|
|
1478+++8FB7~ OUT (C),A
|
|
1479+++8FB7~ RET
|
|
1480+++8FB7~ 1481+++8FB7~ IF ACBBAC
|
|
1482+++8FB7~ CHTABLE EQU $-4
|
|
1483+++8FB7~ DB 4,5,15,%001001,0,7,7,%100100
|
|
1484+++8FB7~ ENDIF
|
|
1485+++8FB7~ 1486+++8FB7~ NT_DATA DB (T_NEW_0-T1_)*2
|
|
1487+++8FB7~ DB TCNEW_0-T_
|
|
1488+++8FB7~ DB (T_OLD_0-T1_)*2+1
|
|
1489+++8FB7~ DB TCOLD_0-T_
|
|
1490+++8FB7~ DB (T_NEW_1-T1_)*2+1
|
|
1491+++8FB7~ DB TCNEW_1-T_
|
|
1492+++8FB7~ DB (T_OLD_1-T1_)*2+1
|
|
1493+++8FB7~ DB TCOLD_1-T_
|
|
1494+++8FB7~ DB (T_NEW_2-T1_)*2
|
|
1495+++8FB7~ DB TCNEW_2-T_
|
|
1496+++8FB7~ DB (T_OLD_2-T1_)*2
|
|
1497+++8FB7~ DB TCOLD_2-T_
|
|
1498+++8FB7~ DB (T_NEW_3-T1_)*2
|
|
1499+++8FB7~ DB TCNEW_3-T_
|
|
1500+++8FB7~ DB (T_OLD_3-T1_)*2
|
|
1501+++8FB7~ DB TCOLD_3-T_
|
|
1502+++8FB7~ 1503+++8FB7~ T_
|
|
1504+++8FB7~ 1505+++8FB7~ TCOLD_0 DB #00+1,#04+1,#08+1,#0A+1,#0C+1,#0E+1,#12+1,#14+1
|
|
1506+++8FB7~ DB #18+1,#24+1,#3C+1,0
|
|
1507+++8FB7~ TCOLD_1 DB #5C+1,0
|
|
1508+++8FB7~ TCOLD_2 DB #30+1,#36+1,#4C+1,#52+1,#5E+1,#70+1,#82,#8C,#9C
|
|
1509+++8FB7~ DB #9E,#A0,#A6,#A8,#AA,#AC,#AE,#AE,0
|
|
1510+++8FB7~ TCNEW_3 DB #56+1
|
|
1511+++8FB7~ TCOLD_3 DB #1E+1,#22+1,#24+1,#28+1,#2C+1,#2E+1,#32+1,#BE+1,0
|
|
1512+++8FB7~ TCNEW_0 DB #1C+1,#20+1,#22+1,#26+1,#2A+1,#2C+1,#30+1,#54+1
|
|
1513+++8FB7~ DB #BC+1,#BE+1,0
|
|
1514+++8FB7~ TCNEW_1 EQU TCOLD_1
|
|
1515+++8FB7~ TCNEW_2 DB #1A+1,#20+1,#24+1,#28+1,#2A+1,#3A+1,#4C+1,#5E+1
|
|
1516+++8FB7~ DB #BA+1,#BC+1,#BE+1,0
|
|
1517+++8FB7~ 1518+++8FB7~ PT3EMPTYORN EQU $-1
|
|
1519+++8FB7~ DB 1,0
|
|
1520+++8FB7~ 1521+++8FB7~ ;first 12 values of tone tables (packed)
|
|
1522+++8FB7~ 1523+++8FB7~ T_PACK DB #06EC*2/256,#06EC*2&255
|
|
1524+++8FB7~ DB #0755-#06EC
|
|
1525+++8FB7~ DB #07C5-#0755
|
|
1526+++8FB7~ DB #083B-#07C5
|
|
1527+++8FB7~ DB #08B8-#083B
|
|
1528+++8FB7~ DB #093D-#08B8
|
|
1529+++8FB7~ DB #09CA-#093D
|
|
1530+++8FB7~ DB #0A5F-#09CA
|
|
1531+++8FB7~ DB #0AFC-#0A5F
|
|
1532+++8FB7~ DB #0BA4-#0AFC
|
|
1533+++8FB7~ DB #0C55-#0BA4
|
|
1534+++8FB7~ DB #0D10-#0C55
|
|
1535+++8FB7~ DB #066D*2/256,#066D*2&255
|
|
1536+++8FB7~ DB #06CF-#066D
|
|
1537+++8FB7~ DB #0737-#06CF
|
|
1538+++8FB7~ DB #07A4-#0737
|
|
1539+++8FB7~ DB #0819-#07A4
|
|
1540+++8FB7~ DB #0894-#0819
|
|
1541+++8FB7~ DB #0917-#0894
|
|
1542+++8FB7~ DB #09A1-#0917
|
|
1543+++8FB7~ DB #0A33-#09A1
|
|
1544+++8FB7~ DB #0ACF-#0A33
|
|
1545+++8FB7~ DB #0B73-#0ACF
|
|
1546+++8FB7~ DB #0C22-#0B73
|
|
1547+++8FB7~ DB #0CDA-#0C22
|
|
1548+++8FB7~ DB #0704*2/256,#0704*2&255
|
|
1549+++8FB7~ DB #076E-#0704
|
|
1550+++8FB7~ DB #07E0-#076E
|
|
1551+++8FB7~ DB #0858-#07E0
|
|
1552+++8FB7~ DB #08D6-#0858
|
|
1553+++8FB7~ DB #095C-#08D6
|
|
1554+++8FB7~ DB #09EC-#095C
|
|
1555+++8FB7~ DB #0A82-#09EC
|
|
1556+++8FB7~ DB #0B22-#0A82
|
|
1557+++8FB7~ DB #0BCC-#0B22
|
|
1558+++8FB7~ DB #0C80-#0BCC
|
|
1559+++8FB7~ DB #0D3E-#0C80
|
|
1560+++8FB7~ DB #07E0*2/256,#07E0*2&255
|
|
1561+++8FB7~ DB #0858-#07E0
|
|
1562+++8FB7~ DB #08E0-#0858
|
|
1563+++8FB7~ DB #0960-#08E0
|
|
1564+++8FB7~ DB #09F0-#0960
|
|
1565+++8FB7~ DB #0A88-#09F0
|
|
1566+++8FB7~ DB #0B28-#0A88
|
|
1567+++8FB7~ DB #0BD8-#0B28
|
|
1568+++8FB7~ DB #0C80-#0BD8
|
|
1569+++8FB7~ DB #0D60-#0C80
|
|
1570+++8FB7~ DB #0E10-#0D60
|
|
1571+++8FB7~ DB #0EF8-#0E10
|
|
1572+++8FB7~ 1573+++8FB7~ ;vars from here can be stripped
|
|
1574+++8FB7~ ;you can move VARS to any other address
|
|
1575+++8FB7~ 1576+++8FB7~ VARS
|
|
1577+++8FB7~ 1578+++8FB7~ is_ts DB 0
|
|
1579+++8FB7~ 1580+++8FB7~ ;ChannelsVars
|
|
1581+++8FB7~ STRUCT CHP
|
|
1582+++8FB7~ ;reset group
|
|
1583+++8FB7~ PsInOr DB 0
|
|
1584+++8FB7~ PsInSm DB 0
|
|
1585+++8FB7~ CrAmSl DB 0
|
|
1586+++8FB7~ CrNsSl DB 0
|
|
1587+++8FB7~ CrEnSl DB 0
|
|
1588+++8FB7~ TSlCnt DB 0
|
|
1589+++8FB7~ CrTnSl DW 0
|
|
1590+++8FB7~ TnAcc DW 0
|
|
1591+++8FB7~ COnOff DB 0
|
|
1592+++8FB7~ ;reset group
|
|
1593+++8FB7~ 1594+++8FB7~ OnOffD DB 0
|
|
1595+++8FB7~ 1596+++8FB7~ ;IX for PTDECOD here (+12)
|
|
1597+++8FB7~ OffOnD DB 0
|
|
1598+++8FB7~ OrnPtr DW 0
|
|
1599+++8FB7~ SamPtr DW 0
|
|
1600+++8FB7~ NNtSkp DB 0
|
|
1601+++8FB7~ Note DB 0
|
|
1602+++8FB7~ SlToNt DB 0
|
|
1603+++8FB7~ Env_En DB 0
|
|
1604+++8FB7~ Flags DB 0
|
|
1605+++8FB7~ ;Enabled - 0, SimpleGliss - 2
|
|
1606+++8FB7~ TnSlDl DB 0
|
|
1607+++8FB7~ TSlStp DW 0
|
|
1608+++8FB7~ TnDelt DW 0
|
|
1609+++8FB7~ NtSkCn DB 0
|
|
1610+++8FB7~ Volume DB 0
|
|
1611+++8FB7~ ENDS
|
|
1612+++8FB7~ 1613+++8FB7~ STRUCT VRS
|
|
1614+++8FB7~ 1615+++8FB7~ ;IF not works in STRUCT in SjASM :(
|
|
1616+++8FB7~ ; IF CurPosCounter
|
|
1617+++8FB7~ CurPos DB 0
|
|
1618+++8FB7~ PosSub DB 0
|
|
1619+++8FB7~ ; ENDIF
|
|
1620+++8FB7~ 1621+++8FB7~ ModNum DB 0 ;bit0: ChipNum
|
|
1622+++8FB7~ ;bit1: 1-reversed patterns order (AlCo TS)
|
|
1623+++8FB7~ 1624+++8FB7~ ChanA DS CHP
|
|
1625+++8FB7~ ChanB DS CHP
|
|
1626+++8FB7~ ChanC DS CHP
|
|
1627+++8FB7~ 1628+++8FB7~ ;GlobalVars
|
|
1629+++8FB7~ MODADDR DW 0
|
|
1630+++8FB7~ OrnPtrs DW 0
|
|
1631+++8FB7~ SamPtrs DW 0
|
|
1632+++8FB7~ PatsPtr DW 0
|
|
1633+++8FB7~ AdInPtA DW 0
|
|
1634+++8FB7~ AdInPtB DW 0
|
|
1635+++8FB7~ AdInPtC DW 0
|
|
1636+++8FB7~ CrPsPtr DW 0
|
|
1637+++8FB7~ LPosPtr DW 0
|
|
1638+++8FB7~ Delay DB 0
|
|
1639+++8FB7~ DelyCnt DB 0
|
|
1640+++8FB7~ ESldAdd DW 0
|
|
1641+++8FB7~ CurESld DW 0
|
|
1642+++8FB7~ Env_Del DB 0
|
|
1643+++8FB7~ CurEDel DB 0
|
|
1644+++8FB7~ Ns_Base DB 0
|
|
1645+++8FB7~ AddToNs DB 0
|
|
1646+++8FB7~ AddToEn DB 0
|
|
1647+++8FB7~ EnvBase DW 0
|
|
1648+++8FB7~ AYREGS DS 14
|
|
1649+++8FB7~ ENDS
|
|
1650+++8FB7~ 1651+++8FB7~ VARS1 DS VRS
|
|
1652+++8FB7~ VARS2 DS VRS
|
|
1653+++8FB7~ 1654+++8FB7~ VT_ EQU $-16
|
|
1655+++8FB7~ DS 256-16 ;CreatedVolumeTableAddress
|
|
1656+++8FB7~ 1657+++8FB7~ T1_ EQU VT_+16 ;Tone tables data depacked here
|
|
1658+++8FB7~ 1659+++8FB7~ T_OLD_1 EQU T1_
|
|
1660+++8FB7~ T_OLD_2 EQU T_OLD_1+24
|
|
1661+++8FB7~ T_OLD_3 EQU T_OLD_2+24
|
|
1662+++8FB7~ T_OLD_0 EQU T_OLD_3+2
|
|
1663+++8FB7~ T_NEW_0 EQU T_OLD_0
|
|
1664+++8FB7~ T_NEW_1 EQU T_OLD_1
|
|
1665+++8FB7~ T_NEW_2 EQU T_NEW_0+24
|
|
1666+++8FB7~ T_NEW_3 EQU T_OLD_3
|
|
1667+++8FB7~ 1668+++8FB7~ PT2EMPTYORN EQU VT_+31 ;1,0,0 sequence
|
|
1669+++8FB7~ 1670+++8FB7~ NT_ DS 192 ;CreatedNoteTableAddress
|
|
1671+++8FB7~ 1672+++8FB7~ VAR0END EQU VT_+16 ;INIT zeroes from VARS to VAR0END-1
|
|
1673+++8FB7~ 1674+++8FB7~ VARSEND EQU $
|
|
1675+++8FB7~ MDLADDR EQU $
|
|
1676+++8FB7~ 1677+++8FB7~ DISPLAY "PTS player size=",$-START
|
|
1678+++8FB7~ 1679+++8FB7~ ;Release 0 steps:
|
|
1680+++8FB7~ ;04/21/2007
|
|
1681+++8FB7~ ;Works start (PTxPlay adaptation); first beta.
|
|
1682+++8FB7~ ;04/22/2007
|
|
1683+++8FB7~ ;Job finished; beta-testing.
|
|
1684+++8FB7~ ;04/23/2007
|
|
1685+++8FB7~ ;PT v3.7 TS mode corrected (after AlCo remarks).
|
|
1686+++8FB7~ ;04/29/2007
|
|
1687+++8FB7~ ;Added 1.XX and 2.XX special commands interpretation for PT3
|
|
1688+++8FB7~ ;modules of v3.7+.
|
|
1689+++8FB7~ 1690+++8FB7~ ;Size (minimal build for ZX Spectrum):
|
|
1691+++8FB7~ ;Code block #908 bytes
|
|
1692+++8FB7~ ;Variables #2BF bytes (can be stripped)
|
|
1693+++8FB7~ ;Total size #908+#2BF=#BC7 (3015) bytes
|
|
1694+++8FB7~ 1695+++8FB7~ ENDMOD
|
|
1696+++8FB7~ 1697+++8FB7 endif
|
|
1698+++8FB7
|
|
0077+++8FB7
|
|
0078+++8FB7 PT2.Play=PTS.PLAY
|
|
0079+++8FB7 PT2.Mute=PTS.MUTE
|
|
0080+++8FB7 PT2.End
|
|
0081+++8FB7
|
|
0082+++8FB7 display "PT2 module size: ",PT2.End-PT2.Start
|
|
0083+++8FB7 endif
|
|
0084+++8FB7
|
|
0420++ 8FB7 include "ts.asm"
|
|
0001+++8FB7 ifndef _ts_asm_defined
|
|
0002+++8FB7 define _ts_asm_defined
|
|
0003+++8FB7
|
|
0004+++8FB7 module TS
|
|
0005+++8FB7
|
|
0006+++8FB7 struct Footer
|
|
0007+++8FB7~ Sign1 DS 4
|
|
0008+++8FB7~ Size1 DW 0
|
|
0009+++8FB7~ Sign2 DS 4
|
|
0010+++8FB7~ Size2 DW 0
|
|
0011+++8FB7~ Sign3 DS 4
|
|
0012+++8FB7 ENDS
|
|
0013+++8FB7
|
|
0014+++8FB7 Start
|
|
0015+++8FB7 ifndef NoPrologue
|
|
0016+++8FB7~ ld hl,End
|
|
0017+++8FB7~ jr .init
|
|
0018+++8FB7~ jp PTS.PLAY
|
|
0019+++8FB7~ jp PTS.MUTE
|
|
0020+++8FB7~ .init call CheckFormat
|
|
0021+++8FB7~ ;ignore invalids
|
|
0022+++8FB7 endif
|
|
0023+++8FB7
|
|
0024+++8FB7 3E 10 Init ld a,PTS.SETUP.TS02
|
|
0025+++8FB9 C3 6C 83 jp PTS.INIT
|
|
0026+++8FBC
|
|
0027+++8FBC ;in HL - module addr
|
|
0028+++8FBC ;out Z - is ts
|
|
0029+++8FBC ;out HL/DE modules offsets (valid only if Z)
|
|
0030+++8FBC CheckFormat
|
|
0031+++8FBD 54 5D ld d,h,e,l
|
|
0032+++8FBE 14 inc d ;skip 256 bytes
|
|
0033+++8FBF .findfooter
|
|
0034+++8FC0 62 6B ld h,d,l,e
|
|
0035+++8FC1 CD CE 8F call CheckFooter
|
|
0036+++8FC4 C8 ret z
|
|
0037+++8FC5 1C inc e
|
|
0038+++8FC6 20 F7 jr nz,.findfooter
|
|
0039+++8FC8 14 inc d
|
|
0040+++8FC9 20 F4 jr nz,.findfooter
|
|
0041+++8FCB 1C inc e ;reset Z
|
|
0042+++8FCC ;hl/de are invalid!!!
|
|
0043+++8FCC C9 ret
|
|
0044+++8FCD
|
|
0045+++8FCD ;in HL - module addr
|
|
0046+++8FCD ;in BC - module size
|
|
0047+++8FCD ;out Z - is ts
|
|
0048+++8FCD ;out HL/DE - modules offsets (valid only if Z)
|
|
0049+++8FCD ifdef HaveFormatCheck
|
|
0050+++8FCD CheckFormatKnownSize
|
|
0051+++8FCD 09 add hl,bc
|
|
0052+++8FCE endif
|
|
0053+++8FCE CheckFooter
|
|
0054+++8FCE 2B dec hl
|
|
0055+++8FCF 7E ld a,(hl)
|
|
0056+++8FD0 FE 53 cp "S"
|
|
0057+++8FD2 C0 ret nz
|
|
0058+++8FD3 2B dec hl
|
|
0059+++8FD4 7E ld a,(hl)
|
|
0060+++8FD5 FE 54 cp "T"
|
|
0061+++8FD7 C0 ret nz
|
|
0062+++8FD8 2B dec hl
|
|
0063+++8FD9 7E ld a,(hl)
|
|
0064+++8FDA FE 32 cp "2"
|
|
0065+++8FDC C0 ret nz
|
|
0066+++8FDD 2B dec hl
|
|
0067+++8FDE 7E ld a,(hl)
|
|
0068+++8FDF FE 30 cp "0"
|
|
0069+++8FE1 C0 ret nz
|
|
0070+++8FE2 2B dec hl
|
|
0071+++8FE3 56 ld d,(hl)
|
|
0072+++8FE4 2B dec hl
|
|
0073+++8FE5 5E ld e,(hl) ;Size2
|
|
0074+++8FE9 2B 2B 2B 2B dec hl,hl,hl,hl;skip Sign2
|
|
0075+++8FEA 2B dec hl
|
|
0076+++8FEB 46 ld b,(hl)
|
|
0077+++8FEC 2B dec hl
|
|
0078+++8FED 4E ld c,(hl) ;Size1
|
|
0079+++8FF1 2B 2B 2B 2B dec hl,hl,hl,hl;skip Sign1
|
|
0080+++8FF2
|
|
0081+++8FF2 ED 52 sbc hl,de
|
|
0082+++8FF4 54 ld d,h
|
|
0083+++8FF5 5D ld e,l
|
|
0084+++8FF6 ED 42 sbc hl,bc
|
|
0085+++8FF8 AF xor a
|
|
0086+++8FF9 C9 ret
|
|
0087+++8FFA
|
|
0088+++8FFA ifdef HaveFormatCheck
|
|
0089+++8FFA display "TS checker size: ",$-CheckFormat
|
|
0090+++8FFA endif
|
|
0091+++8FFA
|
|
0092+++8FFA endmod
|
|
0093+++8FFA
|
|
0094+++8FFA include "PTSPlay.asm"
|
|
0001+++8FFA ifndef _pts_asm_defined
|
|
0002+++8FFA~ define _pts_asm_defined
|
|
0003+++8FFA~ 0004+++8FFA~ MODULE PTS
|
|
0005+++8FFA~
|
|
0006+++8FFA~ ;Universal PT2'n'PT3 Turbo Sound player for ZX Spectrum
|
|
0007+++8FFA~ ;(c)2004-2007 S.V.Bulba <vorobey@mail.khstu.ru>
|
|
0008+++8FFA~ ;Specially for AlCo
|
|
0009+++8FFA~ ;http://bulba.untergrund.net/ (http://bulba.at.kz/)
|
|
0010+++8FFA~ 0011+++8FFA~ ;Release number
|
|
0012+++8FFA~ Release EQU "0"
|
|
0013+++8FFA~ 0014+++8FFA~ ;Conditional assembly
|
|
0015+++8FFA~ ;1) Current position counters at (Vars1+0) and (Vars2+0)
|
|
0016+++8FFA~ CurPosCounter=0
|
|
0017+++8FFA~ ;2) Allow channels allocation bits at (SETUP)
|
|
0018+++8FFA~ ACBBAC=0
|
|
0019+++8FFA~ ;3) Allow loop checking and disabling
|
|
0020+++8FFA~ LoopChecker=0
|
|
0021+++8FFA~ ;4) Insert official identificator
|
|
0022+++8FFA~ Id=0
|
|
0023+++8FFA~ ;5) Set IY for correct return to ZX Basic
|
|
0024+++8FFA~ Basic=0
|
|
0025+++8FFA~ 0026+++8FFA~ ;Features
|
|
0027+++8FFA~ ;--------
|
|
0028+++8FFA~ ;-Can be compiled at any address (i.e. no need rounding ORG
|
|
0029+++8FFA~ ; address).
|
|
0030+++8FFA~ ;-Variables (VARS) can be located at any address (not only after
|
|
0031+++8FFA~ ; code block).
|
|
0032+++8FFA~ ;-INIT subprogram checks PT3-module version and rightly
|
|
0033+++8FFA~ ; generates both note and volume tables outside of code block
|
|
0034+++8FFA~ ; (in VARS).
|
|
0035+++8FFA~ ;-Two portamento (spc. command 3xxx) algorithms (depending of
|
|
0036+++8FFA~ ; PT3 module version).
|
|
0037+++8FFA~ ;-New 1.XX and 2.XX special command behaviour (only for PT v3.7
|
|
0038+++8FFA~ ; and higher).
|
|
0039+++8FFA~ ;-Any Tempo value are accepted (including Tempo=1 and Tempo=2).
|
|
0040+++8FFA~ ;-TS modes: 2xPT3, 2xPT2 and PT v3.7 TS standard.
|
|
0041+++8FFA~ ;-Fully compatible with Ay_Emul PT3 and PT2 players codes.
|
|
0042+++8FFA~ ;-See also notes at the end of this source code.
|
|
0043+++8FFA~ 0044+++8FFA~ ;Limitations
|
|
0045+++8FFA~ ;-----------
|
|
0046+++8FFA~ ;-Can run in RAM only (self-modified code is used).
|
|
0047+++8FFA~ ;-PT2 position list must be end by #FF marker only.
|
|
0048+++8FFA~ 0049+++8FFA~ ;Warning!!! PLAY subprogram can crash if no module are loaded
|
|
0050+++8FFA~ ;into RAM or INIT subprogram was not called before.
|
|
0051+++8FFA~ 0052+++8FFA~ ;Call MUTE or INIT one more time to mute sound after stopping
|
|
0053+++8FFA~ ;playing
|
|
0054+++8FFA~ 0055+++8FFA~ TonA EQU 0
|
|
0056+++8FFA~ TonB EQU 2
|
|
0057+++8FFA~ TonC EQU 4
|
|
0058+++8FFA~ Noise EQU 6
|
|
0059+++8FFA~ Mixer EQU 7
|
|
0060+++8FFA~ AmplA EQU 8
|
|
0061+++8FFA~ AmplB EQU 9
|
|
0062+++8FFA~ AmplC EQU 10
|
|
0063+++8FFA~ Env EQU 11
|
|
0064+++8FFA~ EnvTp EQU 13
|
|
0065+++8FFA~ 0066+++8FFA~ START
|
|
0067+++8FFA~ 0068+++8FFA~ SETUP.NOLOOP EQU 1
|
|
0069+++8FFA~ SETUP.PT2 EQU 2
|
|
0070+++8FFA~ SETUP.ACB EQU 4
|
|
0071+++8FFA~ SETUP.BAC EQU 8
|
|
0072+++8FFA~ SETUP.TS02 EQU 16
|
|
0073+++8FFA~ SETUP.TSPT3 EQU 32
|
|
0074+++8FFA~ 0075+++8FFA~ SETUP DB 0 ;set bit0, if you want to play without looping
|
|
0076+++8FFA~ ;(optional);
|
|
0077+++8FFA~ ;set bit1 for PT2 and reset for PT3 before
|
|
0078+++8FFA~ ;calling INIT;
|
|
0079+++8FFA~ ;bits2-3: %00-ABC, %01-ACB, %10-BAC (optional);
|
|
0080+++8FFA~ ;bits4-5: %00-no TS, %01-2 modules TS, %10-
|
|
0081+++8FFA~ ;autodetect PT3 TS-format by AlCo (PT 3.7+);
|
|
0082+++8FFA~ ;Remark: old PT3 TS-format by AlCo (PT 3.6) is not
|
|
0083+++8FFA~ ;documented and must be converted to new standard.
|
|
0084+++8FFA~ ;bit6 is set each time, when loop point of 2nd TS
|
|
0085+++8FFA~ ;module is passed (optional).
|
|
0086+++8FFA~ ;bit7 is set each time, when loop point of 1st TS
|
|
0087+++8FFA~ ;or of single module is passed (optional).
|
|
0088+++8FFA~ 0089+++8FFA~ ;Identifier
|
|
0090+++8FFA~ IF Id
|
|
0091+++8FFA~ DB "=UniPT2/PT3/TS-Player r.",Release,"="
|
|
0092+++8FFA~ ENDIF
|
|
0093+++8FFA~ 0094+++8FFA~ IF LoopChecker
|
|
0095+++8FFA~ CHECKLP LD HL,SETUP
|
|
0096+++8FFA~ BIT 0,(IY-100+VRS.ModNum)
|
|
0097+++8FFA~ JR Z,CHL1
|
|
0098+++8FFA~ SET 6,(HL)
|
|
0099+++8FFA~ JR CHL2
|
|
0100+++8FFA~ CHL1 SET 7,(HL)
|
|
0101+++8FFA~ CHL2 BIT 0,(HL)
|
|
0102+++8FFA~ RET Z
|
|
0103+++8FFA~ POP HL
|
|
0104+++8FFA~ INC (IY-100+VRS.DelyCnt)
|
|
0105+++8FFA~ INC (IY-100+VRS.ChanA+CHP.NtSkCn)
|
|
0106+++8FFA~ XOR A
|
|
0107+++8FFA~ LD (IY-100+VRS.AYREGS+AmplA),A
|
|
0108+++8FFA~ LD (IY-100+VRS.AYREGS+AmplB),A
|
|
0109+++8FFA~ LD (IY-100+VRS.AYREGS+AmplC),A
|
|
0110+++8FFA~ RET
|
|
0111+++8FFA~ ENDIF
|
|
0112+++8FFA~ 0113+++8FFA~ MUTE XOR A
|
|
0114+++8FFA~ LD H,A
|
|
0115+++8FFA~ LD L,A
|
|
0116+++8FFA~ LD (VARS1+VRS.AYREGS+AmplA),A
|
|
0117+++8FFA~ LD (VARS1+VRS.AYREGS+AmplB),HL
|
|
0118+++8FFA~ LD (VARS2+VRS.AYREGS+AmplA),A
|
|
0119+++8FFA~ LD (VARS2+VRS.AYREGS+AmplB),HL
|
|
0120+++8FFA~ JP ROUT
|
|
0121+++8FFA~ 0122+++8FFA~ INIT
|
|
0123+++8FFA~ ;HL - AddressOfModule
|
|
0124+++8FFA~ ;DE - AddresOf2ndModule
|
|
0125+++8FFA~ ;A - mode
|
|
0126+++8FFA~ PUSH DE
|
|
0127+++8FFA~ PUSH HL
|
|
0128+++8FFA~ LD HL,VARS
|
|
0129+++8FFA~ LD (HL),0
|
|
0130+++8FFA~ LD DE,VARS+1
|
|
0131+++8FFA~ LD BC,VAR0END-VARS-1
|
|
0132+++8FFA~ LDIR
|
|
0133+++8FFA~ INC HL
|
|
0134+++8FFA~ LD (VARS1+VRS.AdInPtA),HL ;ptr to zero
|
|
0135+++8FFA~ LD (VARS2+VRS.AdInPtA),HL
|
|
0136+++8FFA~ 0137+++8FFA~ POP HL
|
|
0138+++8FFA~ LD IY,VARS1+100
|
|
0139+++8FFA~ LD (SETUP),A
|
|
0140+++8FFA~ AND SETUP.PT2
|
|
0141+++8FFA~ JP NZ,I_PT2
|
|
0142+++8FFA~ 0143+++8FFA~ CALL INITPT3
|
|
0144+++8FFA~ LD HL,(e_-SamCnv-2)*256+#18
|
|
0145+++8FFA~ LD (SamCnv),HL
|
|
0146+++8FFA~ LD A,#BA
|
|
0147+++8FFA~ LD (OrnCP),A
|
|
0148+++8FFA~ LD (SamCP),A
|
|
0149+++8FFA~ LD A,#7B
|
|
0150+++8FFA~ LD (OrnLD),A
|
|
0151+++8FFA~ LD (SamLD),A
|
|
0152+++8FFA~ LD A,#87
|
|
0153+++8FFA~ LD (SamClc2),A
|
|
0154+++8FFA~ POP HL
|
|
0155+++8FFA~ ;Use version and ton table of 1st module
|
|
0156+++8FFA~ LD A,(IX+13-100) ;EXTRACT VERSION NUMBER
|
|
0157+++8FFA~ SUB #30
|
|
0158+++8FFA~ JR C,L20
|
|
0159+++8FFA~ CP 10
|
|
0160+++8FFA~ JR C,L21
|
|
0161+++8FFA~ L20 LD A,6
|
|
0162+++8FFA~ L21 LD (Version),A
|
|
0163+++8FFA~ PUSH AF ;VolTable version
|
|
0164+++8FFA~ CP 4
|
|
0165+++8FFA~ LD A,(IX+99-100) ;TONE TABLE NUMBER
|
|
0166+++8FFA~ RLA
|
|
0167+++8FFA~ AND 7
|
|
0168+++8FFA~ PUSH AF ;NoteTable number
|
|
0169+++8FFA~ 0170+++8FFA~ LD IY,VARS2+100
|
|
0171+++8FFA~ LD A,(SETUP)
|
|
0172+++8FFA~ AND SETUP.TS02|SETUP.TSPT3
|
|
0173+++8FFA~ JR Z,NOTS
|
|
0174+++8FFA~ CP SETUP.TS02
|
|
0175+++8FFA~ JR Z,TwoPT3s
|
|
0176+++8FFA~ LD A,(Version)
|
|
0177+++8FFA~ CP 7
|
|
0178+++8FFA~ JR C,NOTS
|
|
0179+++8FFA~ LD A,(IX+98-100) ;ALCO TS MARKER
|
|
0180+++8FFA~ CP #20
|
|
0181+++8FFA~ JR Z,NOTS
|
|
0182+++8FFA~ LD HL,VARS1
|
|
0183+++8FFA~ LD DE,VARS2
|
|
0184+++8FFA~ LD BC,VRS
|
|
0185+++8FFA~ LDIR
|
|
0186+++8FFA~ SET 1,(IY-100+VRS.ModNum)
|
|
0187+++8FFA~ LD C,A
|
|
0188+++8FFA~ ADD A,A
|
|
0189+++8FFA~ ADD A,C
|
|
0190+++8FFA~ SUB 2
|
|
0191+++8FFA~ LD (TSSub),A
|
|
0192+++8FFA~ JR AlCoTS_
|
|
0193+++8FFA~ TwoPT3s CALL INITPT3
|
|
0194+++8FFA~ AlCoTS_ LD A,1
|
|
0195+++8FFA~ LD (is_ts),A
|
|
0196+++8FFA~ SET 0,(IY-100+VRS.ModNum)
|
|
0197+++8FFA~ 0198+++8FFA~ NOTS LD BC,PT3PD
|
|
0199+++8FFA~ LD HL,0
|
|
0200+++8FFA~ LD DE,PT3EMPTYORN
|
|
0201+++8FFA~ JR INITCOMMON
|
|
0202+++8FFA~ 0203+++8FFA~ I_PT2 CALL INITPT2
|
|
0204+++8FFA~ LD HL,#51CB
|
|
0205+++8FFA~ LD (SamCnv),HL
|
|
0206+++8FFA~ LD A,#BB
|
|
0207+++8FFA~ LD (OrnCP),A
|
|
0208+++8FFA~ LD (SamCP),A
|
|
0209+++8FFA~ LD A,#7A
|
|
0210+++8FFA~ LD (OrnLD),A
|
|
0211+++8FFA~ LD (SamLD),A
|
|
0212+++8FFA~ LD A,#80
|
|
0213+++8FFA~ LD (SamClc2),A
|
|
0214+++8FFA~ POP HL
|
|
0215+++8FFA~ LD A,5
|
|
0216+++8FFA~ LD (Version),A
|
|
0217+++8FFA~ PUSH AF
|
|
0218+++8FFA~ LD A,2
|
|
0219+++8FFA~ PUSH AF
|
|
0220+++8FFA~ 0221+++8FFA~ LD A,(SETUP)
|
|
0222+++8FFA~ AND SETUP.TS02|SETUP.TSPT3
|
|
0223+++8FFA~ JR Z,NOTS2
|
|
0224+++8FFA~ 0225+++8FFA~ LD IY,VARS2+100
|
|
0226+++8FFA~ LD A,1
|
|
0227+++8FFA~ LD (is_ts),A
|
|
0228+++8FFA~ SET 0,(IY-100+VRS.ModNum)
|
|
0229+++8FFA~ CALL INITPT2
|
|
0230+++8FFA~ 0231+++8FFA~ NOTS2 LD BC,PT2PD
|
|
0232+++8FFA~ LD HL,#8687
|
|
0233+++8FFA~ LD DE,PT2EMPTYORN
|
|
0234+++8FFA~ 0235+++8FFA~ INITCOMMON
|
|
0236+++8FFA~ 0237+++8FFA~ IF Basic
|
|
0238+++8FFA~ LD IY,#5C3A
|
|
0239+++8FFA~ ENDIF
|
|
0240+++8FFA~ 0241+++8FFA~ LD (PTDEC),BC
|
|
0242+++8FFA~ LD (PsCalc),HL
|
|
0243+++8FFA~ PUSH DE
|
|
0244+++8FFA~ 0245+++8FFA~ ;note table data depacker
|
|
0246+++8FFA~ ;(c) Ivan Roshin
|
|
0247+++8FFA~ LD DE,T_PACK
|
|
0248+++8FFA~ LD BC,T1_+(2*49)-1
|
|
0249+++8FFA~ TP_0 LD A,(DE)
|
|
0250+++8FFA~ INC DE
|
|
0251+++8FFA~ CP 15*2
|
|
0252+++8FFA~ JR NC,TP_1
|
|
0253+++8FFA~ LD H,A
|
|
0254+++8FFA~ LD A,(DE)
|
|
0255+++8FFA~ LD L,A
|
|
0256+++8FFA~ INC DE
|
|
0257+++8FFA~ JR TP_2
|
|
0258+++8FFA~ TP_1 PUSH DE
|
|
0259+++8FFA~ LD D,0
|
|
0260+++8FFA~ LD E,A
|
|
0261+++8FFA~ ADD HL,DE
|
|
0262+++8FFA~ ADD HL,DE
|
|
0263+++8FFA~ POP DE
|
|
0264+++8FFA~ TP_2 LD A,H
|
|
0265+++8FFA~ LD (BC),A
|
|
0266+++8FFA~ DEC BC
|
|
0267+++8FFA~ LD A,L
|
|
0268+++8FFA~ LD (BC),A
|
|
0269+++8FFA~ DEC BC
|
|
0270+++8FFA~ SUB (#F8*2)&255
|
|
0271+++8FFA~ JR NZ,TP_0
|
|
0272+++8FFA~ 0273+++8FFA~ INC A
|
|
0274+++8FFA~ LD (VARS1+VRS.DelyCnt),A
|
|
0275+++8FFA~ LD (VARS2+VRS.DelyCnt),A
|
|
0276+++8FFA~ LD HL,#F001 ;H - CHP.Volume, L - CHP.NtSkCn
|
|
0277+++8FFA~ LD (VARS1+VRS.ChanA+CHP.NtSkCn),HL
|
|
0278+++8FFA~ LD (VARS1+VRS.ChanB+CHP.NtSkCn),HL
|
|
0279+++8FFA~ LD (VARS1+VRS.ChanC+CHP.NtSkCn),HL
|
|
0280+++8FFA~ LD (VARS2+VRS.ChanA+CHP.NtSkCn),HL
|
|
0281+++8FFA~ LD (VARS2+VRS.ChanB+CHP.NtSkCn),HL
|
|
0282+++8FFA~ LD (VARS2+VRS.ChanC+CHP.NtSkCn),HL
|
|
0283+++8FFA~ POP HL
|
|
0284+++8FFA~ LD (VARS1+VRS.ChanA+CHP.OrnPtr),HL
|
|
0285+++8FFA~ LD (VARS1+VRS.ChanB+CHP.OrnPtr),HL
|
|
0286+++8FFA~ LD (VARS1+VRS.ChanC+CHP.OrnPtr),HL
|
|
0287+++8FFA~ LD (VARS2+VRS.ChanA+CHP.OrnPtr),HL
|
|
0288+++8FFA~ LD (VARS2+VRS.ChanB+CHP.OrnPtr),HL
|
|
0289+++8FFA~ LD (VARS2+VRS.ChanC+CHP.OrnPtr),HL
|
|
0290+++8FFA~ 0291+++8FFA~ POP AF
|
|
0292+++8FFA~ 0293+++8FFA~ ;NoteTableCreator (c) Ivan Roshin
|
|
0294+++8FFA~ ;A - NoteTableNumber*2+VersionForNoteTable
|
|
0295+++8FFA~ ;(xx1b - 3.xx..3.4r, xx0b - 3.4x..3.6x..VTII1.0)
|
|
0296+++8FFA~ 0297+++8FFA~ LD HL,NT_DATA
|
|
0298+++8FFA~ LD D,0
|
|
0299+++8FFA~ ADD A,A
|
|
0300+++8FFA~ LD E,A
|
|
0301+++8FFA~ ADD HL,DE
|
|
0302+++8FFA~ LD E,(HL)
|
|
0303+++8FFA~ INC HL
|
|
0304+++8FFA~ SRL E
|
|
0305+++8FFA~ SBC A,A
|
|
0306+++8FFA~ AND #A7 ;#00 (NOP) or #A7 (AND A)
|
|
0307+++8FFA~ LD (L3),A
|
|
0308+++8FFA~ EX DE,HL
|
|
0309+++8FFA~ LD BC,T1_
|
|
0310+++8FFA~ ADD HL,BC
|
|
0311+++8FFA~ 0312+++8FFA~ LD A,(DE)
|
|
0313+++8FFA~ ADD A,T_&255
|
|
0314+++8FFA~ LD C,A
|
|
0315+++8FFA~ ADC A,T_/256
|
|
0316+++8FFA~ SUB C
|
|
0317+++8FFA~ LD B,A
|
|
0318+++8FFA~ PUSH BC
|
|
0319+++8FFA~ LD DE,NT_
|
|
0320+++8FFA~ PUSH DE
|
|
0321+++8FFA~ 0322+++8FFA~ LD B,12
|
|
0323+++8FFA~ L1 PUSH BC
|
|
0324+++8FFA~ LD C,(HL)
|
|
0325+++8FFA~ INC HL
|
|
0326+++8FFA~ PUSH HL
|
|
0327+++8FFA~ LD B,(HL)
|
|
0328+++8FFA~ 0329+++8FFA~ PUSH DE
|
|
0330+++8FFA~ EX DE,HL
|
|
0331+++8FFA~ LD DE,23
|
|
0332+++8FFA~ LD IXH,8
|
|
0333+++8FFA~ 0334+++8FFA~ L2 SRL B
|
|
0335+++8FFA~ RR C
|
|
0336+++8FFA~ L3 DB #19 ;AND A or NOP
|
|
0337+++8FFA~ LD A,C
|
|
0338+++8FFA~ ADC A,D ;=ADC 0
|
|
0339+++8FFA~ LD (HL),A
|
|
0340+++8FFA~ INC HL
|
|
0341+++8FFA~ LD A,B
|
|
0342+++8FFA~ ADC A,D
|
|
0343+++8FFA~ LD (HL),A
|
|
0344+++8FFA~ ADD HL,DE
|
|
0345+++8FFA~ DEC IXH
|
|
0346+++8FFA~ JR NZ,L2
|
|
0347+++8FFA~ 0348+++8FFA~ POP DE
|
|
0349+++8FFA~ INC DE
|
|
0350+++8FFA~ INC DE
|
|
0351+++8FFA~ POP HL
|
|
0352+++8FFA~ INC HL
|
|
0353+++8FFA~ POP BC
|
|
0354+++8FFA~ DJNZ L1
|
|
0355+++8FFA~ 0356+++8FFA~ POP HL
|
|
0357+++8FFA~ POP DE
|
|
0358+++8FFA~ 0359+++8FFA~ LD A,E
|
|
0360+++8FFA~ CP TCOLD_1&255
|
|
0361+++8FFA~ JR NZ,CORR_1
|
|
0362+++8FFA~ LD A,#FD
|
|
0363+++8FFA~ LD (NT_+#2E),A
|
|
0364+++8FFA~ 0365+++8FFA~ CORR_1 LD A,(DE)
|
|
0366+++8FFA~ AND A
|
|
0367+++8FFA~ JR Z,TC_EXIT
|
|
0368+++8FFA~ RRA
|
|
0369+++8FFA~ PUSH AF
|
|
0370+++8FFA~ ADD A,A
|
|
0371+++8FFA~ LD C,A
|
|
0372+++8FFA~ ADD HL,BC
|
|
0373+++8FFA~ POP AF
|
|
0374+++8FFA~ JR NC,CORR_2
|
|
0375+++8FFA~ DEC (HL)
|
|
0376+++8FFA~ DEC (HL)
|
|
0377+++8FFA~ CORR_2 INC (HL)
|
|
0378+++8FFA~ AND A
|
|
0379+++8FFA~ SBC HL,BC
|
|
0380+++8FFA~ INC DE
|
|
0381+++8FFA~ JR CORR_1
|
|
0382+++8FFA~ 0383+++8FFA~ TC_EXIT
|
|
0384+++8FFA~ 0385+++8FFA~ POP AF
|
|
0386+++8FFA~ 0387+++8FFA~ ;VolTableCreator (c) Ivan Roshin
|
|
0388+++8FFA~ ;A - VersionForVolumeTable (0..4 - 3.xx..3.4x;
|
|
0389+++8FFA~ ;5.. - 2.x,3.5x..3.6x..VTII1.0)
|
|
0390+++8FFA~ 0391+++8FFA~ CP 5
|
|
0392+++8FFA~ LD HL,#11
|
|
0393+++8FFA~ LD D,H
|
|
0394+++8FFA~ LD E,H
|
|
0395+++8FFA~ LD A,#17
|
|
0396+++8FFA~ JR NC,M1
|
|
0397+++8FFA~ DEC L
|
|
0398+++8FFA~ LD E,L
|
|
0399+++8FFA~ XOR A
|
|
0400+++8FFA~ M1 LD (M2),A
|
|
0401+++8FFA~ 0402+++8FFA~ LD IX,VT_+16
|
|
0403+++8FFA~ 0404+++8FFA~ LD C,#F
|
|
0405+++8FFA~ INITV2 PUSH HL
|
|
0406+++8FFA~ 0407+++8FFA~ ADD HL,DE
|
|
0408+++8FFA~ EX DE,HL
|
|
0409+++8FFA~ SBC HL,HL
|
|
0410+++8FFA~ 0411+++8FFA~ LD B,#10
|
|
0412+++8FFA~ INITV1 LD A,L
|
|
0413+++8FFA~ M2 DB #7D
|
|
0414+++8FFA~ LD A,H
|
|
0415+++8FFA~ ADC A,0
|
|
0416+++8FFA~ LD (IX),A
|
|
0417+++8FFA~ INC IX
|
|
0418+++8FFA~ ADD HL,DE
|
|
0419+++8FFA~ DJNZ INITV1
|
|
0420+++8FFA~ 0421+++8FFA~ POP HL
|
|
0422+++8FFA~ LD A,E
|
|
0423+++8FFA~ CP #77
|
|
0424+++8FFA~ JR NZ,M3
|
|
0425+++8FFA~ INC E
|
|
0426+++8FFA~ M3 DEC C
|
|
0427+++8FFA~ JR NZ,INITV2
|
|
0428+++8FFA~ 0429+++8FFA~ JP ROUT
|
|
0430+++8FFA~ 0431+++8FFA~ INITPT3 CALL SETMDAD
|
|
0432+++8FFA~ PUSH HL
|
|
0433+++8FFA~ LD DE,100
|
|
0434+++8FFA~ ADD HL,DE
|
|
0435+++8FFA~ LD A,(HL)
|
|
0436+++8FFA~ LD (IY-100+VRS.Delay),A
|
|
0437+++8FFA~ PUSH HL
|
|
0438+++8FFA~ POP IX
|
|
0439+++8FFA~ ADD HL,DE
|
|
0440+++8FFA~ CALL SETCPPT
|
|
0441+++8FFA~ LD E,(IX+102-100)
|
|
0442+++8FFA~ INC HL
|
|
0443+++8FFA~ 0444+++8FFA~ IF CurPosCounter
|
|
0445+++8FFA~ LD (IY-100+VRS.PosSub),L
|
|
0446+++8FFA~ ENDIF
|
|
0447+++8FFA~ 0448+++8FFA~ ADD HL,DE
|
|
0449+++8FFA~ CALL SETLPPT
|
|
0450+++8FFA~ POP DE
|
|
0451+++8FFA~ LD L,(IX+103-100)
|
|
0452+++8FFA~ LD H,(IX+104-100)
|
|
0453+++8FFA~ ADD HL,DE
|
|
0454+++8FFA~ CALL SETPTPT
|
|
0455+++8FFA~ LD HL,169
|
|
0456+++8FFA~ ADD HL,DE
|
|
0457+++8FFA~ CALL SETORPT
|
|
0458+++8FFA~ LD HL,105
|
|
0459+++8FFA~ ADD HL,DE
|
|
0460+++8FFA~ 0461+++8FFA~ SETSMPT LD (IY-100+VRS.SamPtrs),L
|
|
0462+++8FFA~ LD (IY-100+VRS.SamPtrs+1),H
|
|
0463+++8FFA~ RET
|
|
0464+++8FFA~ 0465+++8FFA~ INITPT2 LD A,(HL)
|
|
0466+++8FFA~ LD (IY-100+VRS.Delay),A
|
|
0467+++8FFA~ PUSH HL
|
|
0468+++8FFA~ PUSH HL
|
|
0469+++8FFA~ PUSH HL
|
|
0470+++8FFA~ INC HL
|
|
0471+++8FFA~ INC HL
|
|
0472+++8FFA~ LD A,(HL)
|
|
0473+++8FFA~ INC HL
|
|
0474+++8FFA~ CALL SETSMPT
|
|
0475+++8FFA~ LD E,(HL)
|
|
0476+++8FFA~ INC HL
|
|
0477+++8FFA~ LD D,(HL)
|
|
0478+++8FFA~ POP HL
|
|
0479+++8FFA~ AND A
|
|
0480+++8FFA~ SBC HL,DE
|
|
0481+++8FFA~ CALL SETMDAD
|
|
0482+++8FFA~ POP HL
|
|
0483+++8FFA~ LD DE,67
|
|
0484+++8FFA~ ADD HL,DE
|
|
0485+++8FFA~ CALL SETORPT
|
|
0486+++8FFA~ LD E,32
|
|
0487+++8FFA~ ADD HL,DE
|
|
0488+++8FFA~ LD C,(HL)
|
|
0489+++8FFA~ INC HL
|
|
0490+++8FFA~ LD B,(HL)
|
|
0491+++8FFA~ LD E,30
|
|
0492+++8FFA~ ADD HL,DE
|
|
0493+++8FFA~ CALL SETCPPT
|
|
0494+++8FFA~ LD E,A
|
|
0495+++8FFA~ INC HL
|
|
0496+++8FFA~ 0497+++8FFA~ IF CurPosCounter
|
|
0498+++8FFA~ LD (IY-100+VRS.PosSub),L
|
|
0499+++8FFA~ ENDIF
|
|
0500+++8FFA~ 0501+++8FFA~ ADD HL,DE
|
|
0502+++8FFA~ CALL SETLPPT
|
|
0503+++8FFA~ POP HL
|
|
0504+++8FFA~ ADD HL,BC
|
|
0505+++8FFA~ 0506+++8FFA~ SETPTPT LD (IY-100+VRS.PatsPtr),L
|
|
0507+++8FFA~ LD (IY-100+VRS.PatsPtr+1),H
|
|
0508+++8FFA~ RET
|
|
0509+++8FFA~ 0510+++8FFA~ SETMDAD LD (IY-100+VRS.MODADDR),L
|
|
0511+++8FFA~ LD (IY-100+VRS.MODADDR+1),H
|
|
0512+++8FFA~ RET
|
|
0513+++8FFA~ 0514+++8FFA~ SETORPT LD (IY-100+VRS.OrnPtrs),L
|
|
0515+++8FFA~ LD (IY-100+VRS.OrnPtrs+1),H
|
|
0516+++8FFA~ RET
|
|
0517+++8FFA~ 0518+++8FFA~ SETCPPT LD (IY-100+VRS.CrPsPtr),L
|
|
0519+++8FFA~ LD (IY-100+VRS.CrPsPtr+1),H
|
|
0520+++8FFA~ RET
|
|
0521+++8FFA~ 0522+++8FFA~ SETLPPT LD (IY-100+VRS.LPosPtr),L
|
|
0523+++8FFA~ LD (IY-100+VRS.LPosPtr+1),H
|
|
0524+++8FFA~ RET
|
|
0525+++8FFA~ 0526+++8FFA~ SETENBS LD (IY-100+VRS.EnvBase),L
|
|
0527+++8FFA~ LD (IY-100+VRS.EnvBase+1),H
|
|
0528+++8FFA~ RET
|
|
0529+++8FFA~ 0530+++8FFA~ SETESLD LD (IY-100+VRS.CurESld),L
|
|
0531+++8FFA~ LD (IY-100+VRS.CurESld+1),H
|
|
0532+++8FFA~ RET
|
|
0533+++8FFA~ 0534+++8FFA~ GETIX PUSH IY
|
|
0535+++8FFA~ POP IX
|
|
0536+++8FFA~ ADD IX,DE
|
|
0537+++8FFA~ RET
|
|
0538+++8FFA~ 0539+++8FFA~ PTDECOD CALL GETIX
|
|
0540+++8FFA~ PTDEC EQU $+1
|
|
0541+++8FFA~ JP #C3C3
|
|
0542+++8FFA~ 0543+++8FFA~ ;PT2 pattern decoder
|
|
0544+++8FFA~ PD2_SAM CALL SETSAM
|
|
0545+++8FFA~ JR PD2_LOOP
|
|
0546+++8FFA~ 0547+++8FFA~ PD2_EOff LD (IX-12+CHP.Env_En),A
|
|
0548+++8FFA~ JR PD2_LOOP
|
|
0549+++8FFA~ 0550+++8FFA~ PD2_ENV LD (IX-12+CHP.Env_En),16
|
|
0551+++8FFA~ LD (IY-100+VRS.AYREGS+EnvTp),A
|
|
0552+++8FFA~ LD A,(BC)
|
|
0553+++8FFA~ INC BC
|
|
0554+++8FFA~ LD L,A
|
|
0555+++8FFA~ LD A,(BC)
|
|
0556+++8FFA~ INC BC
|
|
0557+++8FFA~ LD H,A
|
|
0558+++8FFA~ CALL SETENBS
|
|
0559+++8FFA~ JR PD2_LOOP
|
|
0560+++8FFA~ 0561+++8FFA~ PD2_ORN CALL SETORN
|
|
0562+++8FFA~ JR PD2_LOOP
|
|
0563+++8FFA~ 0564+++8FFA~ PD2_SKIP INC A
|
|
0565+++8FFA~ LD (IX-12+CHP.NNtSkp),A
|
|
0566+++8FFA~ JR PD2_LOOP
|
|
0567+++8FFA~ 0568+++8FFA~ PD2_VOL RRCA
|
|
0569+++8FFA~ RRCA
|
|
0570+++8FFA~ RRCA
|
|
0571+++8FFA~ RRCA
|
|
0572+++8FFA~ LD (IX-12+CHP.Volume),A
|
|
0573+++8FFA~ JR PD2_LOOP
|
|
0574+++8FFA~ 0575+++8FFA~ PD2_DEL CALL C_DELAY
|
|
0576+++8FFA~ JR PD2_LOOP
|
|
0577+++8FFA~ 0578+++8FFA~ PD2_GLIS SET 2,(IX-12+CHP.Flags)
|
|
0579+++8FFA~ INC A
|
|
0580+++8FFA~ LD (IX-12+CHP.TnSlDl),A
|
|
0581+++8FFA~ LD (IX-12+CHP.TSlCnt),A
|
|
0582+++8FFA~ LD A,(BC)
|
|
0583+++8FFA~ INC BC
|
|
0584+++8FFA~ LD (IX-12+CHP.TSlStp),A
|
|
0585+++8FFA~ ADD A,A
|
|
0586+++8FFA~ SBC A,A
|
|
0587+++8FFA~ LD (IX-12+CHP.TSlStp+1),A
|
|
0588+++8FFA~ SCF
|
|
0589+++8FFA~ JR PD2_LP2
|
|
0590+++8FFA~ 0591+++8FFA~ PT2PD AND A
|
|
0592+++8FFA~ 0593+++8FFA~ PD2_LP2 EX AF,AF'
|
|
0594+++8FFA~ 0595+++8FFA~ PD2_LOOP LD A,(BC)
|
|
0596+++8FFA~ INC BC
|
|
0597+++8FFA~ ADD A,#20
|
|
0598+++8FFA~ JR Z,PD2_REL
|
|
0599+++8FFA~ JR C,PD2_SAM
|
|
0600+++8FFA~ ADD A,96
|
|
0601+++8FFA~ JR C,PD2_NOTE
|
|
0602+++8FFA~ INC A
|
|
0603+++8FFA~ JR Z,PD2_EOff
|
|
0604+++8FFA~ ADD A,15
|
|
0605+++8FFA~ JP Z,PD_FIN
|
|
0606+++8FFA~ JR C,PD2_ENV
|
|
0607+++8FFA~ ADD A,#10
|
|
0608+++8FFA~ JR C,PD2_ORN
|
|
0609+++8FFA~ ADD A,#40
|
|
0610+++8FFA~ JR C,PD2_SKIP
|
|
0611+++8FFA~ ADD A,#10
|
|
0612+++8FFA~ JR C,PD2_VOL
|
|
0613+++8FFA~ INC A
|
|
0614+++8FFA~ JR Z,PD2_DEL
|
|
0615+++8FFA~ INC A
|
|
0616+++8FFA~ JR Z,PD2_GLIS
|
|
0617+++8FFA~ INC A
|
|
0618+++8FFA~ JR Z,PD2_PORT
|
|
0619+++8FFA~ INC A
|
|
0620+++8FFA~ JR Z,PD2_STOP
|
|
0621+++8FFA~ LD A,(BC)
|
|
0622+++8FFA~ INC BC
|
|
0623+++8FFA~ LD (IX-12+CHP.CrNsSl),A
|
|
0624+++8FFA~ JR PD2_LOOP
|
|
0625+++8FFA~ 0626+++8FFA~ PD2_PORT RES 2,(IX-12+CHP.Flags)
|
|
0627+++8FFA~ LD A,(BC)
|
|
0628+++8FFA~ INC BC
|
|
0629+++8FFA~ INC BC ;ignoring precalc delta to right sound
|
|
0630+++8FFA~ INC BC
|
|
0631+++8FFA~ SCF
|
|
0632+++8FFA~ JR PD2_LP2
|
|
0633+++8FFA~ 0634+++8FFA~ PD2_STOP LD (IX-12+CHP.TSlCnt),A
|
|
0635+++8FFA~ JR PD2_LOOP
|
|
0636+++8FFA~ 0637+++8FFA~ PD2_REL LD (IX-12+CHP.Flags),A
|
|
0638+++8FFA~ JR PD2_EXIT
|
|
0639+++8FFA~ 0640+++8FFA~ PD2_NOTE LD L,A
|
|
0641+++8FFA~ LD A,(IX-12+CHP.Note)
|
|
0642+++8FFA~ LD (PrNote+1),A
|
|
0643+++8FFA~ LD (IX-12+CHP.Note),L
|
|
0644+++8FFA~ XOR A
|
|
0645+++8FFA~ LD (IX-12+CHP.TSlCnt),A
|
|
0646+++8FFA~ SET 0,(IX-12+CHP.Flags)
|
|
0647+++8FFA~ EX AF,AF'
|
|
0648+++8FFA~ JR NC,NOGLIS2
|
|
0649+++8FFA~ BIT 2,(IX-12+CHP.Flags)
|
|
0650+++8FFA~ JR NZ,NOPORT2
|
|
0651+++8FFA~ LD (LoStep),A
|
|
0652+++8FFA~ ADD A,A
|
|
0653+++8FFA~ SBC A,A
|
|
0654+++8FFA~ EX AF,AF'
|
|
0655+++8FFA~ LD H,A
|
|
0656+++8FFA~ LD L,A
|
|
0657+++8FFA~ INC A
|
|
0658+++8FFA~ CALL SETPORT
|
|
0659+++8FFA~ NOPORT2 LD (IX-12+CHP.TSlCnt),1
|
|
0660+++8FFA~ NOGLIS2 XOR A
|
|
0661+++8FFA~ 0662+++8FFA~ 0663+++8FFA~ PD2_EXIT LD (IX-12+CHP.PsInSm),A
|
|
0664+++8FFA~ LD (IX-12+CHP.PsInOr),A
|
|
0665+++8FFA~ LD (IX-12+CHP.CrTnSl),A
|
|
0666+++8FFA~ LD (IX-12+CHP.CrTnSl+1),A
|
|
0667+++8FFA~ JP PD_FIN
|
|
0668+++8FFA~ 0669+++8FFA~ ;PT3 pattern decoder
|
|
0670+++8FFA~ PD_OrSm LD (IX-12+CHP.Env_En),0
|
|
0671+++8FFA~ CALL SETORN
|
|
0672+++8FFA~ PD_SAM_ LD A,(BC)
|
|
0673+++8FFA~ INC BC
|
|
0674+++8FFA~ RRCA
|
|
0675+++8FFA~ 0676+++8FFA~ PD_SAM CALL SETSAM
|
|
0677+++8FFA~ JR PD_LOOP
|
|
0678+++8FFA~ 0679+++8FFA~ PD_VOL RRCA
|
|
0680+++8FFA~ RRCA
|
|
0681+++8FFA~ RRCA
|
|
0682+++8FFA~ RRCA
|
|
0683+++8FFA~ LD (IX-12+CHP.Volume),A
|
|
0684+++8FFA~ JR PD_LP2
|
|
0685+++8FFA~
|
|
0686+++8FFA~ PD_EOff LD (IX-12+CHP.Env_En),A
|
|
0687+++8FFA~ LD (IX-12+CHP.PsInOr),A
|
|
0688+++8FFA~ JR PD_LP2
|
|
0689+++8FFA~ 0690+++8FFA~ PD_SorE DEC A
|
|
0691+++8FFA~ JR NZ,PD_ENV
|
|
0692+++8FFA~ LD A,(BC)
|
|
0693+++8FFA~ INC BC
|
|
0694+++8FFA~ LD (IX-12+CHP.NNtSkp),A
|
|
0695+++8FFA~ JR PD_LP2
|
|
0696+++8FFA~ 0697+++8FFA~ PD_ENV CALL SETENV
|
|
0698+++8FFA~ JR PD_LP2
|
|
0699+++8FFA~ 0700+++8FFA~ PD_ORN CALL SETORN
|
|
0701+++8FFA~ JR PD_LOOP
|
|
0702+++8FFA~ 0703+++8FFA~ PD_ESAM LD (IX-12+CHP.Env_En),A
|
|
0704+++8FFA~ LD (IX-12+CHP.PsInOr),A
|
|
0705+++8FFA~ CALL NZ,SETENV
|
|
0706+++8FFA~ JR PD_SAM_
|
|
0707+++8FFA~ 0708+++8FFA~ PT3PD LD A,(IX-12+CHP.Note)
|
|
0709+++8FFA~ LD (PrNote+1),A
|
|
0710+++8FFA~ LD L,(IX-12+CHP.CrTnSl)
|
|
0711+++8FFA~ LD H,(IX-12+CHP.CrTnSl+1)
|
|
0712+++8FFA~ LD (PrSlide+1),HL
|
|
0713+++8FFA~ 0714+++8FFA~ PD_LOOP LD DE,#2010
|
|
0715+++8FFA~ PD_LP2 LD A,(BC)
|
|
0716+++8FFA~ INC BC
|
|
0717+++8FFA~ ADD A,E
|
|
0718+++8FFA~ JR C,PD_OrSm
|
|
0719+++8FFA~ ADD A,D
|
|
0720+++8FFA~ JR Z,PD_FIN
|
|
0721+++8FFA~ JR C,PD_SAM
|
|
0722+++8FFA~ ADD A,E
|
|
0723+++8FFA~ JR Z,PD_REL
|
|
0724+++8FFA~ JR C,PD_VOL
|
|
0725+++8FFA~ ADD A,E
|
|
0726+++8FFA~ JR Z,PD_EOff
|
|
0727+++8FFA~ JR C,PD_SorE
|
|
0728+++8FFA~ ADD A,96
|
|
0729+++8FFA~ JR C,PD_NOTE
|
|
0730+++8FFA~ ADD A,E
|
|
0731+++8FFA~ JR C,PD_ORN
|
|
0732+++8FFA~ ADD A,D
|
|
0733+++8FFA~ JR C,PD_NOIS
|
|
0734+++8FFA~ ADD A,E
|
|
0735+++8FFA~ JR C,PD_ESAM
|
|
0736+++8FFA~ ADD A,A
|
|
0737+++8FFA~ LD E,A
|
|
0738+++8FFA~ LD HL,(SPCCOMS+#FF20-#2000)&65535
|
|
0739+++8FFA~ ADD HL,DE
|
|
0740+++8FFA~ LD E,(HL)
|
|
0741+++8FFA~ INC HL
|
|
0742+++8FFA~ LD D,(HL)
|
|
0743+++8FFA~ PUSH DE
|
|
0744+++8FFA~ JR PD_LOOP
|
|
0745+++8FFA~ 0746+++8FFA~ PD_NOIS LD (IY-100+VRS.Ns_Base),A
|
|
0747+++8FFA~ JR PD_LP2
|
|
0748+++8FFA~ 0749+++8FFA~ PD_REL RES 0,(IX-12+CHP.Flags)
|
|
0750+++8FFA~ JR PD_RES
|
|
0751+++8FFA~ 0752+++8FFA~ PD_NOTE LD (IX-12+CHP.Note),A
|
|
0753+++8FFA~ SET 0,(IX-12+CHP.Flags)
|
|
0754+++8FFA~ XOR A
|
|
0755+++8FFA~ 0756+++8FFA~ PD_RES LD (PDSP_+1),SP
|
|
0757+++8FFA~ LD SP,IX
|
|
0758+++8FFA~ LD H,A
|
|
0759+++8FFA~ LD L,A
|
|
0760+++8FFA~ PUSH HL
|
|
0761+++8FFA~ PUSH HL
|
|
0762+++8FFA~ PUSH HL
|
|
0763+++8FFA~ PUSH HL
|
|
0764+++8FFA~ PUSH HL
|
|
0765+++8FFA~ PUSH HL
|
|
0766+++8FFA~ PDSP_ LD SP,#3131
|
|
0767+++8FFA~ 0768+++8FFA~ PD_FIN LD A,(IX-12+CHP.NNtSkp)
|
|
0769+++8FFA~ LD (IX-12+CHP.NtSkCn),A
|
|
0770+++8FFA~ RET
|
|
0771+++8FFA~ 0772+++8FFA~ C_PORTM LD A,(BC)
|
|
0773+++8FFA~ INC BC
|
|
0774+++8FFA~ ;SKIP PRECALCULATED TONE DELTA (BECAUSE
|
|
0775+++8FFA~ ;CANNOT BE RIGHT AFTER PT3 COMPILATION)
|
|
0776+++8FFA~ INC BC
|
|
0777+++8FFA~ INC BC
|
|
0778+++8FFA~ EX AF,AF'
|
|
0779+++8FFA~ LD A,(BC) ;SIGNED TONE STEP
|
|
0780+++8FFA~ INC BC
|
|
0781+++8FFA~ LD (LoStep),A
|
|
0782+++8FFA~ LD A,(BC)
|
|
0783+++8FFA~ INC BC
|
|
0784+++8FFA~ AND A
|
|
0785+++8FFA~ EX AF,AF'
|
|
0786+++8FFA~ LD L,(IX-12+CHP.CrTnSl)
|
|
0787+++8FFA~ LD H,(IX-12+CHP.CrTnSl+1)
|
|
0788+++8FFA~ 0789+++8FFA~ ;Set portamento variables
|
|
0790+++8FFA~ ;A - Delay; A' - Hi(Step); ZF' - (A'=0); HL - CrTnSl
|
|
0791+++8FFA~ 0792+++8FFA~ SETPORT RES 2,(IX-12+CHP.Flags)
|
|
0793+++8FFA~ LD (IX-12+CHP.TnSlDl),A
|
|
0794+++8FFA~ LD (IX-12+CHP.TSlCnt),A
|
|
0795+++8FFA~ PUSH HL
|
|
0796+++8FFA~ LD DE,NT_
|
|
0797+++8FFA~ LD A,(IX-12+CHP.Note)
|
|
0798+++8FFA~ LD (IX-12+CHP.SlToNt),A
|
|
0799+++8FFA~ ADD A,A
|
|
0800+++8FFA~ LD L,A
|
|
0801+++8FFA~ LD H,0
|
|
0802+++8FFA~ ADD HL,DE
|
|
0803+++8FFA~ LD A,(HL)
|
|
0804+++8FFA~ INC HL
|
|
0805+++8FFA~ LD H,(HL)
|
|
0806+++8FFA~ LD L,A
|
|
0807+++8FFA~ PUSH HL
|
|
0808+++8FFA~ PrNote LD A,#3E
|
|
0809+++8FFA~ LD (IX-12+CHP.Note),A
|
|
0810+++8FFA~ ADD A,A
|
|
0811+++8FFA~ LD L,A
|
|
0812+++8FFA~ LD H,0
|
|
0813+++8FFA~ ADD HL,DE
|
|
0814+++8FFA~ LD E,(HL)
|
|
0815+++8FFA~ INC HL
|
|
0816+++8FFA~ LD D,(HL)
|
|
0817+++8FFA~ POP HL
|
|
0818+++8FFA~ SBC HL,DE
|
|
0819+++8FFA~ LD (IX-12+CHP.TnDelt),L
|
|
0820+++8FFA~ LD (IX-12+CHP.TnDelt+1),H
|
|
0821+++8FFA~ POP DE
|
|
0822+++8FFA~ Version EQU $+1
|
|
0823+++8FFA~ LD A,#3E
|
|
0824+++8FFA~ CP 6
|
|
0825+++8FFA~ JR C,OLDPRTM ;Old 3xxx for PT v3.5-
|
|
0826+++8FFA~ PrSlide LD DE,#1111
|
|
0827+++8FFA~ LD (IX-12+CHP.CrTnSl),E
|
|
0828+++8FFA~ LD (IX-12+CHP.CrTnSl+1),D
|
|
0829+++8FFA~ LoStep EQU $+1
|
|
0830+++8FFA~ OLDPRTM LD A,#3E
|
|
0831+++8FFA~ EX AF,AF'
|
|
0832+++8FFA~ JR Z,NOSIG
|
|
0833+++8FFA~ EX DE,HL
|
|
0834+++8FFA~ NOSIG SBC HL,DE
|
|
0835+++8FFA~ JP P,SET_STP
|
|
0836+++8FFA~ CPL
|
|
0837+++8FFA~ EX AF,AF'
|
|
0838+++8FFA~ NEG
|
|
0839+++8FFA~ EX AF,AF'
|
|
0840+++8FFA~ SET_STP LD (IX-12+CHP.TSlStp+1),A
|
|
0841+++8FFA~ EX AF,AF'
|
|
0842+++8FFA~ LD (IX-12+CHP.TSlStp),A
|
|
0843+++8FFA~ LD (IX-12+CHP.COnOff),0
|
|
0844+++8FFA~ RET
|
|
0845+++8FFA~ 0846+++8FFA~ C_GLISS SET 2,(IX-12+CHP.Flags)
|
|
0847+++8FFA~ LD A,(BC)
|
|
0848+++8FFA~ INC BC
|
|
0849+++8FFA~ LD (IX-12+CHP.TnSlDl),A
|
|
0850+++8FFA~ AND A
|
|
0851+++8FFA~ JR NZ,GL36
|
|
0852+++8FFA~ LD A,(Version) ;AlCo PT3.7+
|
|
0853+++8FFA~ CP 7
|
|
0854+++8FFA~ SBC A,A
|
|
0855+++8FFA~ INC A
|
|
0856+++8FFA~ GL36 LD (IX-12+CHP.TSlCnt),A
|
|
0857+++8FFA~ LD A,(BC)
|
|
0858+++8FFA~ INC BC
|
|
0859+++8FFA~ EX AF,AF'
|
|
0860+++8FFA~ LD A,(BC)
|
|
0861+++8FFA~ INC BC
|
|
0862+++8FFA~ JR SET_STP
|
|
0863+++8FFA~ 0864+++8FFA~ C_SMPOS LD A,(BC)
|
|
0865+++8FFA~ INC BC
|
|
0866+++8FFA~ LD (IX-12+CHP.PsInSm),A
|
|
0867+++8FFA~ RET
|
|
0868+++8FFA~ 0869+++8FFA~ C_ORPOS LD A,(BC)
|
|
0870+++8FFA~ INC BC
|
|
0871+++8FFA~ LD (IX-12+CHP.PsInOr),A
|
|
0872+++8FFA~ RET
|
|
0873+++8FFA~ 0874+++8FFA~ C_VIBRT LD A,(BC)
|
|
0875+++8FFA~ INC BC
|
|
0876+++8FFA~ LD (IX-12+CHP.OnOffD),A
|
|
0877+++8FFA~ LD (IX-12+CHP.COnOff),A
|
|
0878+++8FFA~ LD A,(BC)
|
|
0879+++8FFA~ INC BC
|
|
0880+++8FFA~ LD (IX-12+CHP.OffOnD),A
|
|
0881+++8FFA~ XOR A
|
|
0882+++8FFA~ LD (IX-12+CHP.TSlCnt),A
|
|
0883+++8FFA~ LD (IX-12+CHP.CrTnSl),A
|
|
0884+++8FFA~ LD (IX-12+CHP.CrTnSl+1),A
|
|
0885+++8FFA~ RET
|
|
0886+++8FFA~ 0887+++8FFA~ C_ENGLS LD A,(BC)
|
|
0888+++8FFA~ INC BC
|
|
0889+++8FFA~ LD (IY-100+VRS.Env_Del),A
|
|
0890+++8FFA~ LD (IY-100+VRS.CurEDel),A
|
|
0891+++8FFA~ LD A,(BC)
|
|
0892+++8FFA~ INC BC
|
|
0893+++8FFA~ LD L,A
|
|
0894+++8FFA~ LD A,(BC)
|
|
0895+++8FFA~ INC BC
|
|
0896+++8FFA~ LD H,A
|
|
0897+++8FFA~ LD (IY-100+VRS.ESldAdd),L
|
|
0898+++8FFA~ LD (IY-100+VRS.ESldAdd+1),H
|
|
0899+++8FFA~ RET
|
|
0900+++8FFA~ 0901+++8FFA~ C_DELAY LD A,(BC)
|
|
0902+++8FFA~ INC BC
|
|
0903+++8FFA~ LD (IY-100+VRS.Delay),A
|
|
0904+++8FFA~ LD HL,VARS2+VRS.ModNum ;if AlCo_TS
|
|
0905+++8FFA~ BIT 1,(HL)
|
|
0906+++8FFA~ RET Z
|
|
0907+++8FFA~ LD (VARS1+VRS.Delay),A
|
|
0908+++8FFA~ LD (VARS1+VRS.DelyCnt),A
|
|
0909+++8FFA~ LD (VARS2+VRS.Delay),A
|
|
0910+++8FFA~ RET
|
|
0911+++8FFA~
|
|
0912+++8FFA~ SETENV LD (IX-12+CHP.Env_En),E
|
|
0913+++8FFA~ LD (IY-100+VRS.AYREGS+EnvTp),A
|
|
0914+++8FFA~ LD A,(BC)
|
|
0915+++8FFA~ INC BC
|
|
0916+++8FFA~ LD H,A
|
|
0917+++8FFA~ LD A,(BC)
|
|
0918+++8FFA~ INC BC
|
|
0919+++8FFA~ LD L,A
|
|
0920+++8FFA~ CALL SETENBS
|
|
0921+++8FFA~ XOR A
|
|
0922+++8FFA~ LD (IX-12+CHP.PsInOr),A
|
|
0923+++8FFA~ LD (IY-100+VRS.CurEDel),A
|
|
0924+++8FFA~ LD H,A
|
|
0925+++8FFA~ LD L,A
|
|
0926+++8FFA~ JP SETESLD
|
|
0927+++8FFA~ 0928+++8FFA~ SETORN ADD A,A
|
|
0929+++8FFA~ LD E,A
|
|
0930+++8FFA~ LD D,0
|
|
0931+++8FFA~ LD (IX-12+CHP.PsInOr),D
|
|
0932+++8FFA~ LD L,(IY-100+VRS.OrnPtrs)
|
|
0933+++8FFA~ LD H,(IY-100+VRS.OrnPtrs+1)
|
|
0934+++8FFA~ ADD HL,DE
|
|
0935+++8FFA~ LD E,(HL)
|
|
0936+++8FFA~ INC HL
|
|
0937+++8FFA~ LD D,(HL)
|
|
0938+++8FFA~ LD L,(IY-100+VRS.MODADDR)
|
|
0939+++8FFA~ LD H,(IY-100+VRS.MODADDR+1)
|
|
0940+++8FFA~ ADD HL,DE
|
|
0941+++8FFA~ LD (IX-12+CHP.OrnPtr),L
|
|
0942+++8FFA~ LD (IX-12+CHP.OrnPtr+1),H
|
|
0943+++8FFA~ C_NOP RET
|
|
0944+++8FFA~ 0945+++8FFA~ SETSAM ADD A,A
|
|
0946+++8FFA~ LD E,A
|
|
0947+++8FFA~ LD D,0
|
|
0948+++8FFA~ LD L,(IY-100+VRS.SamPtrs);
|
|
0949+++8FFA~ LD H,(IY-100+VRS.SamPtrs+1);
|
|
0950+++8FFA~ ADD HL,DE
|
|
0951+++8FFA~ LD E,(HL)
|
|
0952+++8FFA~ INC HL
|
|
0953+++8FFA~ LD D,(HL)
|
|
0954+++8FFA~ LD L,(IY-100+VRS.MODADDR)
|
|
0955+++8FFA~ LD H,(IY-100+VRS.MODADDR+1)
|
|
0956+++8FFA~ ADD HL,DE
|
|
0957+++8FFA~ LD (IX-12+CHP.SamPtr),L
|
|
0958+++8FFA~ LD (IX-12+CHP.SamPtr+1),H
|
|
0959+++8FFA~ RET
|
|
0960+++8FFA~ 0961+++8FFA~ ;ALL 16 ADDRESSES TO PROTECT FROM BROKEN PT3 MODULES
|
|
0962+++8FFA~ SPCCOMS DW C_NOP
|
|
0963+++8FFA~ DW C_GLISS
|
|
0964+++8FFA~ DW C_PORTM
|
|
0965+++8FFA~ DW C_SMPOS
|
|
0966+++8FFA~ DW C_ORPOS
|
|
0967+++8FFA~ DW C_VIBRT
|
|
0968+++8FFA~ DW C_NOP
|
|
0969+++8FFA~ DW C_NOP
|
|
0970+++8FFA~ DW C_ENGLS
|
|
0971+++8FFA~ DW C_DELAY
|
|
0972+++8FFA~ DW C_NOP
|
|
0973+++8FFA~ DW C_NOP
|
|
0974+++8FFA~ DW C_NOP
|
|
0975+++8FFA~ DW C_NOP
|
|
0976+++8FFA~ DW C_NOP
|
|
0977+++8FFA~ DW C_NOP
|
|
0978+++8FFA~ 0979+++8FFA~ CHREGS CALL GETIX
|
|
0980+++8FFA~ XOR A
|
|
0981+++8FFA~ LD (Ampl),A
|
|
0982+++8FFA~ BIT 0,(IX+CHP.Flags)
|
|
0983+++8FFA~ PUSH HL
|
|
0984+++8FFA~ JP Z,CH_EXIT
|
|
0985+++8FFA~ LD (CSP_+1),SP
|
|
0986+++8FFA~ LD L,(IX+CHP.OrnPtr)
|
|
0987+++8FFA~ LD H,(IX+CHP.OrnPtr+1)
|
|
0988+++8FFA~ LD SP,HL
|
|
0989+++8FFA~ POP DE
|
|
0990+++8FFA~ LD H,A
|
|
0991+++8FFA~ LD A,(IX+CHP.PsInOr)
|
|
0992+++8FFA~ LD L,A
|
|
0993+++8FFA~ ADD HL,SP
|
|
0994+++8FFA~ INC A
|
|
0995+++8FFA~ ;PT2 PT3
|
|
0996+++8FFA~ OrnCP INC A ;CP E CP D
|
|
0997+++8FFA~ JR C,CH_ORPS
|
|
0998+++8FFA~ OrnLD DB 1 ;LD A,D LD A,E
|
|
0999+++8FFA~ CH_ORPS LD (IX+CHP.PsInOr),A
|
|
1000+++8FFA~ LD A,(IX+CHP.Note)
|
|
1001+++8FFA~ ADD A,(HL)
|
|
1002+++8FFA~ JP P,CH_NTP
|
|
1003+++8FFA~ XOR A
|
|
1004+++8FFA~ CH_NTP CP 96
|
|
1005+++8FFA~ JR C,CH_NOK
|
|
1006+++8FFA~ LD A,95
|
|
1007+++8FFA~ CH_NOK ADD A,A
|
|
1008+++8FFA~ EX AF,AF'
|
|
1009+++8FFA~ LD L,(IX+CHP.SamPtr)
|
|
1010+++8FFA~ LD H,(IX+CHP.SamPtr+1)
|
|
1011+++8FFA~ LD SP,HL
|
|
1012+++8FFA~ POP DE
|
|
1013+++8FFA~ LD H,0
|
|
1014+++8FFA~ LD A,(IX+CHP.PsInSm)
|
|
1015+++8FFA~ LD B,A
|
|
1016+++8FFA~ ADD A,A
|
|
1017+++8FFA~ SamClc2 ADD A,A ;or ADD A,B for PT2
|
|
1018+++8FFA~ LD L,A
|
|
1019+++8FFA~ ADD HL,SP
|
|
1020+++8FFA~ LD SP,HL
|
|
1021+++8FFA~ LD A,B
|
|
1022+++8FFA~ INC A
|
|
1023+++8FFA~ ;PT2 PT3
|
|
1024+++8FFA~ SamCP INC A ;CP E CP D
|
|
1025+++8FFA~ JR C,CH_SMPS
|
|
1026+++8FFA~ SamLD DB 1 ;LD A,D LD A,E
|
|
1027+++8FFA~ CH_SMPS LD (IX+CHP.PsInSm),A
|
|
1028+++8FFA~ POP BC
|
|
1029+++8FFA~ POP HL
|
|
1030+++8FFA~ 1031+++8FFA~ ;Convert PT2 sample to PT3
|
|
1032+++8FFA~ ;PT2 PT3
|
|
1033+++8FFA~ SamCnv POP HL ;BIT 2,C JR e_
|
|
1034+++8FFA~ POP HL
|
|
1035+++8FFA~ LD H,B
|
|
1036+++8FFA~ JR NZ,$+8
|
|
1037+++8FFA~ EX DE,HL
|
|
1038+++8FFA~ AND A
|
|
1039+++8FFA~ SBC HL,HL
|
|
1040+++8FFA~ SBC HL,DE
|
|
1041+++8FFA~ LD D,C
|
|
1042+++8FFA~ RR C
|
|
1043+++8FFA~ SBC A,A
|
|
1044+++8FFA~ CPL
|
|
1045+++8FFA~ AND #3E
|
|
1046+++8FFA~ RR C
|
|
1047+++8FFA~ RR B
|
|
1048+++8FFA~ AND C
|
|
1049+++8FFA~ LD C,A
|
|
1050+++8FFA~ LD A,B
|
|
1051+++8FFA~ RRA
|
|
1052+++8FFA~ RRA
|
|
1053+++8FFA~ RR D
|
|
1054+++8FFA~ RRA
|
|
1055+++8FFA~ AND #9F
|
|
1056+++8FFA~ LD B,A
|
|
1057+++8FFA~ 1058+++8FFA~ e_ LD E,(IX+CHP.TnAcc)
|
|
1059+++8FFA~ LD D,(IX+CHP.TnAcc+1)
|
|
1060+++8FFA~ ADD HL,DE
|
|
1061+++8FFA~ BIT 6,B
|
|
1062+++8FFA~ JR Z,CH_NOAC
|
|
1063+++8FFA~ LD (IX+CHP.TnAcc),L
|
|
1064+++8FFA~ LD (IX+CHP.TnAcc+1),H
|
|
1065+++8FFA~ CH_NOAC EX DE,HL
|
|
1066+++8FFA~ EX AF,AF'
|
|
1067+++8FFA~ ADD A,NT_&255
|
|
1068+++8FFA~ LD L,A
|
|
1069+++8FFA~ ADC A,NT_/256
|
|
1070+++8FFA~ SUB L
|
|
1071+++8FFA~ LD H,A
|
|
1072+++8FFA~ LD SP,HL
|
|
1073+++8FFA~ POP HL
|
|
1074+++8FFA~ ADD HL,DE
|
|
1075+++8FFA~ LD E,(IX+CHP.CrTnSl)
|
|
1076+++8FFA~ LD D,(IX+CHP.CrTnSl+1)
|
|
1077+++8FFA~ ADD HL,DE
|
|
1078+++8FFA~ CSP_ LD SP,#3131
|
|
1079+++8FFA~ EX (SP),HL
|
|
1080+++8FFA~ XOR A
|
|
1081+++8FFA~ OR (IX+CHP.TSlCnt)
|
|
1082+++8FFA~ JR Z,CH_AMP
|
|
1083+++8FFA~ DEC (IX+CHP.TSlCnt)
|
|
1084+++8FFA~ JR NZ,CH_AMP
|
|
1085+++8FFA~ LD A,(IX+CHP.TnSlDl)
|
|
1086+++8FFA~ LD (IX+CHP.TSlCnt),A
|
|
1087+++8FFA~ LD L,(IX+CHP.TSlStp)
|
|
1088+++8FFA~ LD H,(IX+CHP.TSlStp+1)
|
|
1089+++8FFA~ LD A,H
|
|
1090+++8FFA~ ADD HL,DE
|
|
1091+++8FFA~ LD (IX+CHP.CrTnSl),L
|
|
1092+++8FFA~ LD (IX+CHP.CrTnSl+1),H
|
|
1093+++8FFA~ BIT 2,(IX+CHP.Flags)
|
|
1094+++8FFA~ JR NZ,CH_AMP
|
|
1095+++8FFA~ LD E,(IX+CHP.TnDelt)
|
|
1096+++8FFA~ LD D,(IX+CHP.TnDelt+1)
|
|
1097+++8FFA~ AND A
|
|
1098+++8FFA~ JR Z,CH_STPP
|
|
1099+++8FFA~ EX DE,HL
|
|
1100+++8FFA~ CH_STPP SBC HL,DE
|
|
1101+++8FFA~ JP M,CH_AMP
|
|
1102+++8FFA~ LD A,(IX+CHP.SlToNt)
|
|
1103+++8FFA~ LD (IX+CHP.Note),A
|
|
1104+++8FFA~ XOR A
|
|
1105+++8FFA~ LD (IX+CHP.TSlCnt),A
|
|
1106+++8FFA~ LD (IX+CHP.CrTnSl),A
|
|
1107+++8FFA~ LD (IX+CHP.CrTnSl+1),A
|
|
1108+++8FFA~ CH_AMP LD A,(IX+CHP.CrAmSl)
|
|
1109+++8FFA~ BIT 7,C
|
|
1110+++8FFA~ JR Z,CH_NOAM
|
|
1111+++8FFA~ BIT 6,C
|
|
1112+++8FFA~ JR Z,CH_AMIN
|
|
1113+++8FFA~ CP 15
|
|
1114+++8FFA~ JR Z,CH_NOAM
|
|
1115+++8FFA~ INC A
|
|
1116+++8FFA~ JR CH_SVAM
|
|
1117+++8FFA~ CH_AMIN CP -15
|
|
1118+++8FFA~ JR Z,CH_NOAM
|
|
1119+++8FFA~ DEC A
|
|
1120+++8FFA~ CH_SVAM LD (IX+CHP.CrAmSl),A
|
|
1121+++8FFA~ CH_NOAM LD L,A
|
|
1122+++8FFA~ LD A,B
|
|
1123+++8FFA~ AND 15
|
|
1124+++8FFA~ ADD A,L
|
|
1125+++8FFA~ JP P,CH_APOS
|
|
1126+++8FFA~ XOR A
|
|
1127+++8FFA~ CH_APOS CP 16
|
|
1128+++8FFA~ JR C,CH_VOL
|
|
1129+++8FFA~ LD A,15
|
|
1130+++8FFA~ CH_VOL OR (IX+CHP.Volume)
|
|
1131+++8FFA~ ADD A,VT_&255
|
|
1132+++8FFA~ LD L,A
|
|
1133+++8FFA~ ADC A,VT_/256
|
|
1134+++8FFA~ SUB L
|
|
1135+++8FFA~ LD H,A
|
|
1136+++8FFA~ LD A,(HL)
|
|
1137+++8FFA~ CH_ENV BIT 0,C
|
|
1138+++8FFA~ JR NZ,CH_NOEN
|
|
1139+++8FFA~ OR (IX+CHP.Env_En)
|
|
1140+++8FFA~ CH_NOEN LD (Ampl),A
|
|
1141+++8FFA~ BIT 7,B
|
|
1142+++8FFA~ LD A,C
|
|
1143+++8FFA~ JR Z,NO_ENSL
|
|
1144+++8FFA~ RLA
|
|
1145+++8FFA~ RLA
|
|
1146+++8FFA~ SRA A
|
|
1147+++8FFA~ SRA A
|
|
1148+++8FFA~ SRA A
|
|
1149+++8FFA~ ADD A,(IX+CHP.CrEnSl) ;SEE COMMENT BELOW
|
|
1150+++8FFA~ BIT 5,B
|
|
1151+++8FFA~ JR Z,NO_ENAC
|
|
1152+++8FFA~ LD (IX+CHP.CrEnSl),A
|
|
1153+++8FFA~ NO_ENAC ADD A,(IY-100+VRS.AddToEn) ;BUG IN PT3 - NEED WORD HERE
|
|
1154+++8FFA~ LD (IY-100+VRS.AddToEn),A
|
|
1155+++8FFA~ JR CH_MIX
|
|
1156+++8FFA~ NO_ENSL RRA
|
|
1157+++8FFA~ ADD A,(IX+CHP.CrNsSl)
|
|
1158+++8FFA~ LD (IY-100+VRS.AddToNs),A
|
|
1159+++8FFA~ BIT 5,B
|
|
1160+++8FFA~ JR Z,CH_MIX
|
|
1161+++8FFA~ LD (IX+CHP.CrNsSl),A
|
|
1162+++8FFA~ CH_MIX LD A,B
|
|
1163+++8FFA~ RRA
|
|
1164+++8FFA~ AND #48
|
|
1165+++8FFA~ CH_EXIT OR (IY-100+VRS.AYREGS+Mixer)
|
|
1166+++8FFA~ RRCA
|
|
1167+++8FFA~ LD (IY-100+VRS.AYREGS+Mixer),A
|
|
1168+++8FFA~ POP HL
|
|
1169+++8FFA~ XOR A
|
|
1170+++8FFA~ OR (IX+CHP.COnOff)
|
|
1171+++8FFA~ RET Z
|
|
1172+++8FFA~ DEC (IX+CHP.COnOff)
|
|
1173+++8FFA~ RET NZ
|
|
1174+++8FFA~ XOR (IX+CHP.Flags)
|
|
1175+++8FFA~ LD (IX+CHP.Flags),A
|
|
1176+++8FFA~ RRA
|
|
1177+++8FFA~ LD A,(IX+CHP.OnOffD)
|
|
1178+++8FFA~ JR C,CH_ONDL
|
|
1179+++8FFA~ LD A,(IX+CHP.OffOnD)
|
|
1180+++8FFA~ CH_ONDL LD (IX+CHP.COnOff),A
|
|
1181+++8FFA~ RET
|
|
1182+++8FFA~ 1183+++8FFA~ PLAY_ XOR A
|
|
1184+++8FFA~ LD (IY-100+VRS.AddToEn),A
|
|
1185+++8FFA~ LD (IY-100+VRS.AYREGS+Mixer),A
|
|
1186+++8FFA~ DEC A
|
|
1187+++8FFA~ LD (IY-100+VRS.AYREGS+EnvTp),A
|
|
1188+++8FFA~ DEC (IY-100+VRS.DelyCnt)
|
|
1189+++8FFA~ JP NZ,PL2
|
|
1190+++8FFA~ DEC (IY-100+VRS.ChanA+CHP.NtSkCn)
|
|
1191+++8FFA~ JR NZ,PL1B
|
|
1192+++8FFA~ LD C,(IY-100+VRS.AdInPtA)
|
|
1193+++8FFA~ LD B,(IY-100+VRS.AdInPtA+1)
|
|
1194+++8FFA~ LD A,(BC)
|
|
1195+++8FFA~ AND A
|
|
1196+++8FFA~ JR NZ,PL1A
|
|
1197+++8FFA~ LD D,A
|
|
1198+++8FFA~ LD (IY-100+VRS.Ns_Base),A
|
|
1199+++8FFA~ LD L,(IY-100+VRS.CrPsPtr)
|
|
1200+++8FFA~ LD H,(IY-100+VRS.CrPsPtr+1)
|
|
1201+++8FFA~ INC HL
|
|
1202+++8FFA~ LD A,(HL)
|
|
1203+++8FFA~ INC A
|
|
1204+++8FFA~ JR NZ,PLNLP
|
|
1205+++8FFA~ 1206+++8FFA~ IF LoopChecker
|
|
1207+++8FFA~ CALL CHECKLP
|
|
1208+++8FFA~ ENDIF
|
|
1209+++8FFA~ 1210+++8FFA~ LD L,(IY-100+VRS.LPosPtr)
|
|
1211+++8FFA~ LD H,(IY-100+VRS.LPosPtr+1)
|
|
1212+++8FFA~ LD A,(HL)
|
|
1213+++8FFA~ INC A
|
|
1214+++8FFA~ PLNLP CALL SETCPPT
|
|
1215+++8FFA~ DEC A
|
|
1216+++8FFA~ BIT 1,(IY-100+VRS.ModNum)
|
|
1217+++8FFA~ JR Z,NoAlCo
|
|
1218+++8FFA~ TSSub EQU $+1
|
|
1219+++8FFA~ SUB #D6
|
|
1220+++8FFA~ CPL
|
|
1221+++8FFA~ NoAlCo
|
|
1222+++8FFA~ ;PT2 PT3
|
|
1223+++8FFA~ PsCalc DEC A ;ADD A,A NOP
|
|
1224+++8FFA~ DEC A ;ADD A,(HL) NOP
|
|
1225+++8FFA~ ADD A,A
|
|
1226+++8FFA~ LD E,A
|
|
1227+++8FFA~ RL D
|
|
1228+++8FFA~ 1229+++8FFA~ IF CurPosCounter
|
|
1230+++8FFA~ LD A,L
|
|
1231+++8FFA~ SUB (IY-100+VRS.PosSub)
|
|
1232+++8FFA~ LD (IY-100+VRS.CurPos),A
|
|
1233+++8FFA~ ENDIF
|
|
1234+++8FFA~ 1235+++8FFA~ LD L,(IY-100+VRS.PatsPtr)
|
|
1236+++8FFA~ LD H,(IY-100+VRS.PatsPtr+1)
|
|
1237+++8FFA~ ADD HL,DE
|
|
1238+++8FFA~ LD E,(IY-100+VRS.MODADDR)
|
|
1239+++8FFA~ LD D,(IY-100+VRS.MODADDR+1)
|
|
1240+++8FFA~ LD (PSP_+1),SP
|
|
1241+++8FFA~ LD SP,HL
|
|
1242+++8FFA~ POP HL
|
|
1243+++8FFA~ ADD HL,DE
|
|
1244+++8FFA~ LD B,H
|
|
1245+++8FFA~ LD C,L
|
|
1246+++8FFA~ POP HL
|
|
1247+++8FFA~ ADD HL,DE
|
|
1248+++8FFA~ LD (IY-100+VRS.AdInPtB),L
|
|
1249+++8FFA~ LD (IY-100+VRS.AdInPtB+1),H
|
|
1250+++8FFA~ POP HL
|
|
1251+++8FFA~ ADD HL,DE
|
|
1252+++8FFA~ LD (IY-100+VRS.AdInPtC),L
|
|
1253+++8FFA~ LD (IY-100+VRS.AdInPtC+1),H
|
|
1254+++8FFA~ PSP_ LD SP,#3131
|
|
1255+++8FFA~ PL1A LD DE,VRS.ChanA+12-100
|
|
1256+++8FFA~ CALL PTDECOD
|
|
1257+++8FFA~ LD (IY-100+VRS.AdInPtA),C
|
|
1258+++8FFA~ LD (IY-100+VRS.AdInPtA+1),B
|
|
1259+++8FFA~ 1260+++8FFA~ PL1B DEC (IY-100+VRS.ChanB+CHP.NtSkCn)
|
|
1261+++8FFA~ JR NZ,PL1C
|
|
1262+++8FFA~ LD DE,VRS.ChanB+12-100
|
|
1263+++8FFA~ LD C,(IY-100+VRS.AdInPtB)
|
|
1264+++8FFA~ LD B,(IY-100+VRS.AdInPtB+1)
|
|
1265+++8FFA~ CALL PTDECOD
|
|
1266+++8FFA~ LD (IY-100+VRS.AdInPtB),C
|
|
1267+++8FFA~ LD (IY-100+VRS.AdInPtB+1),B
|
|
1268+++8FFA~ 1269+++8FFA~ PL1C DEC (IY-100+VRS.ChanC+CHP.NtSkCn)
|
|
1270+++8FFA~ JR NZ,PL1D
|
|
1271+++8FFA~ LD DE,VRS.ChanC+12-100
|
|
1272+++8FFA~ LD C,(IY-100+VRS.AdInPtC)
|
|
1273+++8FFA~ LD B,(IY-100+VRS.AdInPtC+1)
|
|
1274+++8FFA~ CALL PTDECOD
|
|
1275+++8FFA~ LD (IY-100+VRS.AdInPtC),C
|
|
1276+++8FFA~ LD (IY-100+VRS.AdInPtC+1),B
|
|
1277+++8FFA~ 1278+++8FFA~ PL1D LD A,(IY-100+VRS.Delay)
|
|
1279+++8FFA~ LD (IY-100+VRS.DelyCnt),A
|
|
1280+++8FFA~ 1281+++8FFA~ PL2 LD DE,VRS.ChanA-100
|
|
1282+++8FFA~ LD L,(IY-100+VRS.AYREGS+TonA)
|
|
1283+++8FFA~ LD H,(IY-100+VRS.AYREGS+TonA+1)
|
|
1284+++8FFA~ CALL CHREGS
|
|
1285+++8FFA~ LD (IY-100+VRS.AYREGS+TonA),L
|
|
1286+++8FFA~ LD (IY-100+VRS.AYREGS+TonA+1),H
|
|
1287+++8FFA~ Ampl EQU $+1
|
|
1288+++8FFA~ LD A,#3E
|
|
1289+++8FFA~ LD (IY-100+VRS.AYREGS+AmplA),A
|
|
1290+++8FFA~ LD DE,VRS.ChanB-100
|
|
1291+++8FFA~ LD L,(IY-100+VRS.AYREGS+TonB)
|
|
1292+++8FFA~ LD H,(IY-100+VRS.AYREGS+TonB+1)
|
|
1293+++8FFA~ CALL CHREGS
|
|
1294+++8FFA~ LD (IY-100+VRS.AYREGS+TonB),L
|
|
1295+++8FFA~ LD (IY-100+VRS.AYREGS+TonB+1),H
|
|
1296+++8FFA~ LD A,(Ampl)
|
|
1297+++8FFA~ LD (IY-100+VRS.AYREGS+AmplB),A
|
|
1298+++8FFA~ LD DE,VRS.ChanC-100
|
|
1299+++8FFA~ LD L,(IY-100+VRS.AYREGS+TonC)
|
|
1300+++8FFA~ LD H,(IY-100+VRS.AYREGS+TonC+1)
|
|
1301+++8FFA~ CALL CHREGS
|
|
1302+++8FFA~ LD (IY-100+VRS.AYREGS+TonC),L
|
|
1303+++8FFA~ LD (IY-100+VRS.AYREGS+TonC+1),H
|
|
1304+++8FFA~ LD A,(Ampl)
|
|
1305+++8FFA~ LD (IY-100+VRS.AYREGS+AmplC),A
|
|
1306+++8FFA~ 1307+++8FFA~ LD A,(IY-100+VRS.Ns_Base)
|
|
1308+++8FFA~ ADD (IY-100+VRS.AddToNs)
|
|
1309+++8FFA~ LD (IY-100+VRS.AYREGS+Noise),A
|
|
1310+++8FFA~ 1311+++8FFA~ LD A,(IY-100+VRS.AddToEn)
|
|
1312+++8FFA~ LD E,A
|
|
1313+++8FFA~ ADD A,A
|
|
1314+++8FFA~ SBC A,A
|
|
1315+++8FFA~ LD D,A
|
|
1316+++8FFA~ LD L,(IY-100+VRS.EnvBase)
|
|
1317+++8FFA~ LD H,(IY-100+VRS.EnvBase+1)
|
|
1318+++8FFA~ ADD HL,DE
|
|
1319+++8FFA~ LD E,(IY-100+VRS.CurESld)
|
|
1320+++8FFA~ LD D,(IY-100+VRS.CurESld+1)
|
|
1321+++8FFA~ ADD HL,DE
|
|
1322+++8FFA~ LD (IY-100+VRS.AYREGS+Env),L
|
|
1323+++8FFA~ LD (IY-100+VRS.AYREGS+Env+1),H
|
|
1324+++8FFA~ 1325+++8FFA~ XOR A
|
|
1326+++8FFA~ OR (IY-100+VRS.CurEDel)
|
|
1327+++8FFA~ RET Z
|
|
1328+++8FFA~ DEC (IY-100+VRS.CurEDel)
|
|
1329+++8FFA~ RET NZ
|
|
1330+++8FFA~ LD A,(IY-100+VRS.Env_Del)
|
|
1331+++8FFA~ LD (IY-100+VRS.CurEDel),A
|
|
1332+++8FFA~ LD L,(IY-100+VRS.ESldAdd)
|
|
1333+++8FFA~ LD H,(IY-100+VRS.ESldAdd+1)
|
|
1334+++8FFA~ ADD HL,DE
|
|
1335+++8FFA~ JP SETESLD
|
|
1336+++8FFA~ 1337+++8FFA~ PLAY LD IY,VARS1+100
|
|
1338+++8FFA~ CALL PLAY_
|
|
1339+++8FFA~ LD A,(is_ts)
|
|
1340+++8FFA~ AND A
|
|
1341+++8FFA~ JR Z,PL_nts
|
|
1342+++8FFA~ LD IY,VARS2+100
|
|
1343+++8FFA~ CALL PLAY_
|
|
1344+++8FFA~ PL_nts
|
|
1345+++8FFA~ IF Basic
|
|
1346+++8FFA~ LD IY,#5C3A
|
|
1347+++8FFA~ ENDIF
|
|
1348+++8FFA~ 1349+++8FFA~ ROUT LD BC,#FFFD
|
|
1350+++8FFA~ LD A,(is_ts)
|
|
1351+++8FFA~ AND A
|
|
1352+++8FFA~ IFDEF ONtfm
|
|
1353+++8FFA~ LD L,#F9
|
|
1354+++8FFA~ OUT (C),L
|
|
1355+++8FFA~ ELSE
|
|
1356+++8FFA~ JR Z,r_nts ;keep old standard
|
|
1357+++8FFA~ OUT (C),B
|
|
1358+++8FFA~ ENDIF
|
|
1359+++8FFA~ r_nts EX AF,AF'
|
|
1360+++8FFA~ 1361+++8FFA~ IF ACBBAC
|
|
1362+++8FFA~ LD IX,VARS1+VRS.AYREGS
|
|
1363+++8FFA~ ELSE
|
|
1364+++8FFA~ LD HL,VARS1+VRS.AYREGS
|
|
1365+++8FFA~ ENDIF
|
|
1366+++8FFA~ 1367+++8FFA~ CALL ROUT_
|
|
1368+++8FFA~ EX AF,AF'
|
|
1369+++8FFA~ RET Z
|
|
1370+++8FFA~ LD B,D
|
|
1371+++8FFA~ 1372+++8FFA~ IFDEF ONtfm
|
|
1373+++8FFA~ LD A,#F8
|
|
1374+++8FFA~ ELSE
|
|
1375+++8FFA~ CPL
|
|
1376+++8FFA~ ENDIF
|
|
1377+++8FFA~ OUT (C),A
|
|
1378+++8FFA~ 1379+++8FFA~ IF ACBBAC
|
|
1380+++8FFA~ LD IX,VARS2+VRS.AYREGS
|
|
1381+++8FFA~ ELSE
|
|
1382+++8FFA~ LD HL,VARS2+VRS.AYREGS
|
|
1383+++8FFA~ ENDIF
|
|
1384+++8FFA~ 1385+++8FFA~ ROUT_
|
|
1386+++8FFA~ IF ACBBAC
|
|
1387+++8FFA~ LD A,(SETUP)
|
|
1388+++8FFA~ AND 12
|
|
1389+++8FFA~ JR Z,ABC
|
|
1390+++8FFA~ ADD A,CHTABLE
|
|
1391+++8FFA~ LD E,A
|
|
1392+++8FFA~ ADC A,CHTABLE/256
|
|
1393+++8FFA~ SUB E
|
|
1394+++8FFA~ LD D,A
|
|
1395+++8FFA~ LD B,0
|
|
1396+++8FFA~ PUSH IX
|
|
1397+++8FFA~ POP HL
|
|
1398+++8FFA~ LD A,(DE)
|
|
1399+++8FFA~ INC DE
|
|
1400+++8FFA~ LD C,A
|
|
1401+++8FFA~ ADD HL,BC
|
|
1402+++8FFA~ LD A,(IX+TonB)
|
|
1403+++8FFA~ LD C,(HL)
|
|
1404+++8FFA~ LD (IX+TonB),C
|
|
1405+++8FFA~ LD (HL),A
|
|
1406+++8FFA~ INC HL
|
|
1407+++8FFA~ LD A,(IX+TonB+1)
|
|
1408+++8FFA~ LD C,(HL)
|
|
1409+++8FFA~ LD (IX+TonB+1),C
|
|
1410+++8FFA~ LD (HL),A
|
|
1411+++8FFA~ LD A,(DE)
|
|
1412+++8FFA~ INC DE
|
|
1413+++8FFA~ LD C,A
|
|
1414+++8FFA~ ADD HL,BC
|
|
1415+++8FFA~ LD A,(IX+AmplB)
|
|
1416+++8FFA~ LD C,(HL)
|
|
1417+++8FFA~ LD (IX+AmplB),C
|
|
1418+++8FFA~ LD (HL),A
|
|
1419+++8FFA~ LD A,(DE)
|
|
1420+++8FFA~ INC DE
|
|
1421+++8FFA~ LD (RxCA1),A
|
|
1422+++8FFA~ XOR 8
|
|
1423+++8FFA~ LD (RxCA2),A
|
|
1424+++8FFA~ LD A,(DE)
|
|
1425+++8FFA~ AND (IX+Mixer)
|
|
1426+++8FFA~ LD E,A
|
|
1427+++8FFA~ LD A,(IX+Mixer)
|
|
1428+++8FFA~ RxCA1 DB #E6
|
|
1429+++8FFA~ AND %010010
|
|
1430+++8FFA~ OR E
|
|
1431+++8FFA~ LD E,A
|
|
1432+++8FFA~ LD A,(IX+Mixer)
|
|
1433+++8FFA~ AND %010010
|
|
1434+++8FFA~ RxCA2 OR E
|
|
1435+++8FFA~ OR E
|
|
1436+++8FFA~ LD (IX+Mixer),A
|
|
1437+++8FFA~ ABC
|
|
1438+++8FFA~ ENDIF
|
|
1439+++8FFA~ 1440+++8FFA~ XOR A
|
|
1441+++8FFA~ LD DE,#FFBF
|
|
1442+++8FFA~ 1443+++8FFA~ IF ACBBAC
|
|
1444+++8FFA~ LD BC,#FFFD
|
|
1445+++8FFA~ PUSH IX
|
|
1446+++8FFA~ POP HL
|
|
1447+++8FFA~ ENDIF
|
|
1448+++8FFA~ 1449+++8FFA~ LOUT
|
|
1450+++8FFA~ IFDEF ONtfm
|
|
1451+++8FFA~ INF
|
|
1452+++8FFA~ JP M,$-2
|
|
1453+++8FFA~ ENDIF
|
|
1454+++8FFA~ OUT (C),A
|
|
1455+++8FFA~ IFDEF ONtfm
|
|
1456+++8FFA~ INF
|
|
1457+++8FFA~ JP M,$-2
|
|
1458+++8FFA~ ENDIF
|
|
1459+++8FFA~ LD B,E
|
|
1460+++8FFA~ OUTI
|
|
1461+++8FFA~ LD B,D
|
|
1462+++8FFA~ INC A
|
|
1463+++8FFA~ CP 13
|
|
1464+++8FFA~ JR NZ,LOUT
|
|
1465+++8FFA~ IFDEF ONtfm
|
|
1466+++8FFA~ INF
|
|
1467+++8FFA~ JP M,$-2
|
|
1468+++8FFA~ ENDIF
|
|
1469+++8FFA~ OUT (C),A
|
|
1470+++8FFA~ LD A,(HL)
|
|
1471+++8FFA~ AND A
|
|
1472+++8FFA~ RET M
|
|
1473+++8FFA~ IFDEF ONtfm
|
|
1474+++8FFA~ INF
|
|
1475+++8FFA~ JP M,$-2
|
|
1476+++8FFA~ ENDIF
|
|
1477+++8FFA~ LD B,E
|
|
1478+++8FFA~ OUT (C),A
|
|
1479+++8FFA~ RET
|
|
1480+++8FFA~ 1481+++8FFA~ IF ACBBAC
|
|
1482+++8FFA~ CHTABLE EQU $-4
|
|
1483+++8FFA~ DB 4,5,15,%001001,0,7,7,%100100
|
|
1484+++8FFA~ ENDIF
|
|
1485+++8FFA~ 1486+++8FFA~ NT_DATA DB (T_NEW_0-T1_)*2
|
|
1487+++8FFA~ DB TCNEW_0-T_
|
|
1488+++8FFA~ DB (T_OLD_0-T1_)*2+1
|
|
1489+++8FFA~ DB TCOLD_0-T_
|
|
1490+++8FFA~ DB (T_NEW_1-T1_)*2+1
|
|
1491+++8FFA~ DB TCNEW_1-T_
|
|
1492+++8FFA~ DB (T_OLD_1-T1_)*2+1
|
|
1493+++8FFA~ DB TCOLD_1-T_
|
|
1494+++8FFA~ DB (T_NEW_2-T1_)*2
|
|
1495+++8FFA~ DB TCNEW_2-T_
|
|
1496+++8FFA~ DB (T_OLD_2-T1_)*2
|
|
1497+++8FFA~ DB TCOLD_2-T_
|
|
1498+++8FFA~ DB (T_NEW_3-T1_)*2
|
|
1499+++8FFA~ DB TCNEW_3-T_
|
|
1500+++8FFA~ DB (T_OLD_3-T1_)*2
|
|
1501+++8FFA~ DB TCOLD_3-T_
|
|
1502+++8FFA~ 1503+++8FFA~ T_
|
|
1504+++8FFA~ 1505+++8FFA~ TCOLD_0 DB #00+1,#04+1,#08+1,#0A+1,#0C+1,#0E+1,#12+1,#14+1
|
|
1506+++8FFA~ DB #18+1,#24+1,#3C+1,0
|
|
1507+++8FFA~ TCOLD_1 DB #5C+1,0
|
|
1508+++8FFA~ TCOLD_2 DB #30+1,#36+1,#4C+1,#52+1,#5E+1,#70+1,#82,#8C,#9C
|
|
1509+++8FFA~ DB #9E,#A0,#A6,#A8,#AA,#AC,#AE,#AE,0
|
|
1510+++8FFA~ TCNEW_3 DB #56+1
|
|
1511+++8FFA~ TCOLD_3 DB #1E+1,#22+1,#24+1,#28+1,#2C+1,#2E+1,#32+1,#BE+1,0
|
|
1512+++8FFA~ TCNEW_0 DB #1C+1,#20+1,#22+1,#26+1,#2A+1,#2C+1,#30+1,#54+1
|
|
1513+++8FFA~ DB #BC+1,#BE+1,0
|
|
1514+++8FFA~ TCNEW_1 EQU TCOLD_1
|
|
1515+++8FFA~ TCNEW_2 DB #1A+1,#20+1,#24+1,#28+1,#2A+1,#3A+1,#4C+1,#5E+1
|
|
1516+++8FFA~ DB #BA+1,#BC+1,#BE+1,0
|
|
1517+++8FFA~ 1518+++8FFA~ PT3EMPTYORN EQU $-1
|
|
1519+++8FFA~ DB 1,0
|
|
1520+++8FFA~ 1521+++8FFA~ ;first 12 values of tone tables (packed)
|
|
1522+++8FFA~ 1523+++8FFA~ T_PACK DB #06EC*2/256,#06EC*2&255
|
|
1524+++8FFA~ DB #0755-#06EC
|
|
1525+++8FFA~ DB #07C5-#0755
|
|
1526+++8FFA~ DB #083B-#07C5
|
|
1527+++8FFA~ DB #08B8-#083B
|
|
1528+++8FFA~ DB #093D-#08B8
|
|
1529+++8FFA~ DB #09CA-#093D
|
|
1530+++8FFA~ DB #0A5F-#09CA
|
|
1531+++8FFA~ DB #0AFC-#0A5F
|
|
1532+++8FFA~ DB #0BA4-#0AFC
|
|
1533+++8FFA~ DB #0C55-#0BA4
|
|
1534+++8FFA~ DB #0D10-#0C55
|
|
1535+++8FFA~ DB #066D*2/256,#066D*2&255
|
|
1536+++8FFA~ DB #06CF-#066D
|
|
1537+++8FFA~ DB #0737-#06CF
|
|
1538+++8FFA~ DB #07A4-#0737
|
|
1539+++8FFA~ DB #0819-#07A4
|
|
1540+++8FFA~ DB #0894-#0819
|
|
1541+++8FFA~ DB #0917-#0894
|
|
1542+++8FFA~ DB #09A1-#0917
|
|
1543+++8FFA~ DB #0A33-#09A1
|
|
1544+++8FFA~ DB #0ACF-#0A33
|
|
1545+++8FFA~ DB #0B73-#0ACF
|
|
1546+++8FFA~ DB #0C22-#0B73
|
|
1547+++8FFA~ DB #0CDA-#0C22
|
|
1548+++8FFA~ DB #0704*2/256,#0704*2&255
|
|
1549+++8FFA~ DB #076E-#0704
|
|
1550+++8FFA~ DB #07E0-#076E
|
|
1551+++8FFA~ DB #0858-#07E0
|
|
1552+++8FFA~ DB #08D6-#0858
|
|
1553+++8FFA~ DB #095C-#08D6
|
|
1554+++8FFA~ DB #09EC-#095C
|
|
1555+++8FFA~ DB #0A82-#09EC
|
|
1556+++8FFA~ DB #0B22-#0A82
|
|
1557+++8FFA~ DB #0BCC-#0B22
|
|
1558+++8FFA~ DB #0C80-#0BCC
|
|
1559+++8FFA~ DB #0D3E-#0C80
|
|
1560+++8FFA~ DB #07E0*2/256,#07E0*2&255
|
|
1561+++8FFA~ DB #0858-#07E0
|
|
1562+++8FFA~ DB #08E0-#0858
|
|
1563+++8FFA~ DB #0960-#08E0
|
|
1564+++8FFA~ DB #09F0-#0960
|
|
1565+++8FFA~ DB #0A88-#09F0
|
|
1566+++8FFA~ DB #0B28-#0A88
|
|
1567+++8FFA~ DB #0BD8-#0B28
|
|
1568+++8FFA~ DB #0C80-#0BD8
|
|
1569+++8FFA~ DB #0D60-#0C80
|
|
1570+++8FFA~ DB #0E10-#0D60
|
|
1571+++8FFA~ DB #0EF8-#0E10
|
|
1572+++8FFA~ 1573+++8FFA~ ;vars from here can be stripped
|
|
1574+++8FFA~ ;you can move VARS to any other address
|
|
1575+++8FFA~ 1576+++8FFA~ VARS
|
|
1577+++8FFA~ 1578+++8FFA~ is_ts DB 0
|
|
1579+++8FFA~ 1580+++8FFA~ ;ChannelsVars
|
|
1581+++8FFA~ STRUCT CHP
|
|
1582+++8FFA~ ;reset group
|
|
1583+++8FFA~ PsInOr DB 0
|
|
1584+++8FFA~ PsInSm DB 0
|
|
1585+++8FFA~ CrAmSl DB 0
|
|
1586+++8FFA~ CrNsSl DB 0
|
|
1587+++8FFA~ CrEnSl DB 0
|
|
1588+++8FFA~ TSlCnt DB 0
|
|
1589+++8FFA~ CrTnSl DW 0
|
|
1590+++8FFA~ TnAcc DW 0
|
|
1591+++8FFA~ COnOff DB 0
|
|
1592+++8FFA~ ;reset group
|
|
1593+++8FFA~ 1594+++8FFA~ OnOffD DB 0
|
|
1595+++8FFA~ 1596+++8FFA~ ;IX for PTDECOD here (+12)
|
|
1597+++8FFA~ OffOnD DB 0
|
|
1598+++8FFA~ OrnPtr DW 0
|
|
1599+++8FFA~ SamPtr DW 0
|
|
1600+++8FFA~ NNtSkp DB 0
|
|
1601+++8FFA~ Note DB 0
|
|
1602+++8FFA~ SlToNt DB 0
|
|
1603+++8FFA~ Env_En DB 0
|
|
1604+++8FFA~ Flags DB 0
|
|
1605+++8FFA~ ;Enabled - 0, SimpleGliss - 2
|
|
1606+++8FFA~ TnSlDl DB 0
|
|
1607+++8FFA~ TSlStp DW 0
|
|
1608+++8FFA~ TnDelt DW 0
|
|
1609+++8FFA~ NtSkCn DB 0
|
|
1610+++8FFA~ Volume DB 0
|
|
1611+++8FFA~ ENDS
|
|
1612+++8FFA~ 1613+++8FFA~ STRUCT VRS
|
|
1614+++8FFA~ 1615+++8FFA~ ;IF not works in STRUCT in SjASM :(
|
|
1616+++8FFA~ ; IF CurPosCounter
|
|
1617+++8FFA~ CurPos DB 0
|
|
1618+++8FFA~ PosSub DB 0
|
|
1619+++8FFA~ ; ENDIF
|
|
1620+++8FFA~ 1621+++8FFA~ ModNum DB 0 ;bit0: ChipNum
|
|
1622+++8FFA~ ;bit1: 1-reversed patterns order (AlCo TS)
|
|
1623+++8FFA~ 1624+++8FFA~ ChanA DS CHP
|
|
1625+++8FFA~ ChanB DS CHP
|
|
1626+++8FFA~ ChanC DS CHP
|
|
1627+++8FFA~ 1628+++8FFA~ ;GlobalVars
|
|
1629+++8FFA~ MODADDR DW 0
|
|
1630+++8FFA~ OrnPtrs DW 0
|
|
1631+++8FFA~ SamPtrs DW 0
|
|
1632+++8FFA~ PatsPtr DW 0
|
|
1633+++8FFA~ AdInPtA DW 0
|
|
1634+++8FFA~ AdInPtB DW 0
|
|
1635+++8FFA~ AdInPtC DW 0
|
|
1636+++8FFA~ CrPsPtr DW 0
|
|
1637+++8FFA~ LPosPtr DW 0
|
|
1638+++8FFA~ Delay DB 0
|
|
1639+++8FFA~ DelyCnt DB 0
|
|
1640+++8FFA~ ESldAdd DW 0
|
|
1641+++8FFA~ CurESld DW 0
|
|
1642+++8FFA~ Env_Del DB 0
|
|
1643+++8FFA~ CurEDel DB 0
|
|
1644+++8FFA~ Ns_Base DB 0
|
|
1645+++8FFA~ AddToNs DB 0
|
|
1646+++8FFA~ AddToEn DB 0
|
|
1647+++8FFA~ EnvBase DW 0
|
|
1648+++8FFA~ AYREGS DS 14
|
|
1649+++8FFA~ ENDS
|
|
1650+++8FFA~ 1651+++8FFA~ VARS1 DS VRS
|
|
1652+++8FFA~ VARS2 DS VRS
|
|
1653+++8FFA~ 1654+++8FFA~ VT_ EQU $-16
|
|
1655+++8FFA~ DS 256-16 ;CreatedVolumeTableAddress
|
|
1656+++8FFA~ 1657+++8FFA~ T1_ EQU VT_+16 ;Tone tables data depacked here
|
|
1658+++8FFA~ 1659+++8FFA~ T_OLD_1 EQU T1_
|
|
1660+++8FFA~ T_OLD_2 EQU T_OLD_1+24
|
|
1661+++8FFA~ T_OLD_3 EQU T_OLD_2+24
|
|
1662+++8FFA~ T_OLD_0 EQU T_OLD_3+2
|
|
1663+++8FFA~ T_NEW_0 EQU T_OLD_0
|
|
1664+++8FFA~ T_NEW_1 EQU T_OLD_1
|
|
1665+++8FFA~ T_NEW_2 EQU T_NEW_0+24
|
|
1666+++8FFA~ T_NEW_3 EQU T_OLD_3
|
|
1667+++8FFA~ 1668+++8FFA~ PT2EMPTYORN EQU VT_+31 ;1,0,0 sequence
|
|
1669+++8FFA~ 1670+++8FFA~ NT_ DS 192 ;CreatedNoteTableAddress
|
|
1671+++8FFA~ 1672+++8FFA~ VAR0END EQU VT_+16 ;INIT zeroes from VARS to VAR0END-1
|
|
1673+++8FFA~ 1674+++8FFA~ VARSEND EQU $
|
|
1675+++8FFA~ MDLADDR EQU $
|
|
1676+++8FFA~ 1677+++8FFA~ DISPLAY "PTS player size=",$-START
|
|
1678+++8FFA~ 1679+++8FFA~ ;Release 0 steps:
|
|
1680+++8FFA~ ;04/21/2007
|
|
1681+++8FFA~ ;Works start (PTxPlay adaptation); first beta.
|
|
1682+++8FFA~ ;04/22/2007
|
|
1683+++8FFA~ ;Job finished; beta-testing.
|
|
1684+++8FFA~ ;04/23/2007
|
|
1685+++8FFA~ ;PT v3.7 TS mode corrected (after AlCo remarks).
|
|
1686+++8FFA~ ;04/29/2007
|
|
1687+++8FFA~ ;Added 1.XX and 2.XX special commands interpretation for PT3
|
|
1688+++8FFA~ ;modules of v3.7+.
|
|
1689+++8FFA~ 1690+++8FFA~ ;Size (minimal build for ZX Spectrum):
|
|
1691+++8FFA~ ;Code block #908 bytes
|
|
1692+++8FFA~ ;Variables #2BF bytes (can be stripped)
|
|
1693+++8FFA~ ;Total size #908+#2BF=#BC7 (3015) bytes
|
|
1694+++8FFA~ 1695+++8FFA~ ENDMOD
|
|
1696+++8FFA~ 1697+++8FFA endif
|
|
1698+++8FFA
|
|
0095+++8FFA
|
|
0096+++8FFA TS.End
|
|
0097+++8FFA TS.Play=PTS.PLAY
|
|
0098+++8FFA TS.Mute=PTS.MUTE
|
|
0099+++8FFA
|
|
0100+++8FFA display "TS module size: ",TS.End-TS.Start
|
|
0101+++8FFA
|
|
0102+++8FFA endif
|
|
0103+++8FFA
|
|
0421++ 8FFA include "tfc.asm"
|
|
0001+++8FFA ifndef _tfc_asm_defined
|
|
0002+++8FFA define _tfc_asm_defined
|
|
0003+++8FFA
|
|
0004+++8FFA module TFC
|
|
0005+++8FFA
|
|
0006+++8FFA ; Original version by (C) Alone Coder
|
|
0007+++8FFA ; SjasmPlus adaptation, code cleanup and size optimization by (C) Vitamin/CAIG
|
|
0008+++8FFA
|
|
0009+++8FFA ; Warning: no 60Hz modules support!
|
|
0010+++8FFA
|
|
0011+++8FFA ;TODO begin&end ⮫쪮 � ����� ������
|
|
0012+++8FFA newtfm=1 ;0=revision A, 1=revision C
|
|
0013+++8FFA
|
|
0014+++8FFA if newtfm == 1
|
|
0015+++8FFA statuschip0=%11111000
|
|
0016+++8FFA statuschip1=%11111001
|
|
0017+++8FFA else
|
|
0018+++8FFA~ if newtfm == 2 ;US031DX
|
|
0019+++8FFA~ statuschip0=%11111110
|
|
0020+++8FFA~ statuschip1=%11111111
|
|
0021+++8FFA~ else ;newtfm=0
|
|
0022+++8FFA~ statuschip0=%11111100
|
|
0023+++8FFA~ statuschip1=%11111101
|
|
0024+++8FFA~ endif
|
|
0025+++8FFA endif
|
|
0026+++8FFA
|
|
0027+++8FFA struct Header
|
|
0028+++8FFA~ signature
|
|
0029+++8FFA~ ds 6
|
|
0030+++8FFA~ version ds 3
|
|
0031+++8FFA~ intfreq db 0
|
|
0032+++8FFA~ tfmptrs ds 12
|
|
0033+++8FFA~ ssgptrs ds 12
|
|
0034+++8FFA ends
|
|
0035+++8FFA
|
|
0036+++8FFA struct TFMData
|
|
0037+++8FFA~ addr dw 0
|
|
0038+++8FFA~ skip db 0
|
|
0039+++8FFA~ blkcnt db 0
|
|
0040+++8FFA~ blkretaddr
|
|
0041+++8FFA~ db 0
|
|
0042+++8FFA~ loopaddr
|
|
0043+++8FFA~ db 0
|
|
0044+++8FFA~ tfmlow db 0
|
|
0045+++8FFA~ tfmhigh db 0
|
|
0046+++8FFA ends
|
|
0047+++8FFA
|
|
0048+++8FFA macro WaitStatus
|
|
0049+++8FFA~ if newtfm != 2
|
|
0050+++8FFA~ inf
|
|
0051+++8FFA~ jp m,$-2
|
|
0052+++8FFA~ endif
|
|
0053+++8FFA endm
|
|
0054+++8FFA
|
|
0055+++8FFA macro FM.OutReg Reg
|
|
0056+++8FFA~ WaitStatus
|
|
0057+++8FFA~ out (c),Reg
|
|
0058+++8FFA endm
|
|
0059+++8FFA
|
|
0060+++8FFA macro FM.SelectReg Reg
|
|
0061+++8FFA~ ld b,d
|
|
0062+++8FFA~ FM.OutReg Reg
|
|
0063+++8FFA endm
|
|
0064+++8FFA
|
|
0065+++8FFA macro FM.WriteReg Reg
|
|
0066+++8FFA~ ld b,e
|
|
0067+++8FFA~ FM.OutReg Reg
|
|
0068+++8FFA endm
|
|
0069+++8FFA
|
|
0070+++8FFA Start
|
|
0071+++8FFA 21 73 92 ld hl,End
|
|
0072+++8FFD 18 2F jr Init
|
|
0073+++8FFF C3 E1 90 jp Play
|
|
0074+++9002 C3 6A 90 jp Mute
|
|
0075+++9005
|
|
0076+++9005 ifdef HaveFormatCheck
|
|
0077+++9005 include "format.asm"
|
|
0001+++9005 ;some format checking macros
|
|
0002+++9005 ifndef _format_asm_defined
|
|
0003+++9005~ define _format_asm_defined
|
|
0004+++9005~ 0005+++9005~ macro LessOrEqual number
|
|
0006+++9005~ ld a,number
|
|
0007+++9005~ cp (hl)
|
|
0008+++9005~ inc hl
|
|
0009+++9005~ ret c
|
|
0010+++9005~ endm
|
|
0011+++9005~
|
|
0012+++9005~ macro Greater number
|
|
0013+++9005~ ld a,(hl)
|
|
0014+++9005~ inc hl
|
|
0015+++9005~ cp number
|
|
0016+++9005~ ret c
|
|
0017+++9005~ endm
|
|
0018+++9005~
|
|
0019+++9005~ macro AnyByte
|
|
0020+++9005~ inc hl
|
|
0021+++9005~ endm
|
|
0022+++9005~
|
|
0023+++9005~ macro AnyBytes count
|
|
0024+++9005~ if count > 7
|
|
0025+++9005~ ld a,l
|
|
0026+++9005~ add a,count
|
|
0027+++9005~ ld l,a
|
|
0028+++9005~ adc a,h
|
|
0029+++9005~ sub l
|
|
0030+++9005~ ld h,a
|
|
0031+++9005~ else
|
|
0032+++9005~ dup count
|
|
0033+++9005~ inc hl
|
|
0034+++9005~ edup
|
|
0035+++9005~ endif
|
|
0036+++9005~ endm
|
|
0037+++9005~
|
|
0038+++9005~ macro EqualTo number
|
|
0039+++9005~ ld a,number
|
|
0040+++9005~ cp (hl)
|
|
0041+++9005~ inc hl
|
|
0042+++9005~ ret nz
|
|
0043+++9005~ endm
|
|
0044+++9005~ 0045+++9005 endif
|
|
0046+++9005
|
|
0078+++9005
|
|
0079+++9005 ;in HL - module addr
|
|
0080+++9005 ;out Z - is tfc
|
|
0081+++9005 ;out C - 60 Hz (valid only if Z)
|
|
0082+++9005 CheckFormat
|
|
0083+++9005 EqualTo "T"
|
|
0083+++9005 3E 54 > ld a,number
|
|
0083+++9007 BE > cp (hl)
|
|
0083+++9008 23 > inc hl
|
|
0083+++9009 C0 > ret nz
|
|
0084+++900A EqualTo "F"
|
|
0084+++900A 3E 46 > ld a,number
|
|
0084+++900C BE > cp (hl)
|
|
0084+++900D 23 > inc hl
|
|
0084+++900E C0 > ret nz
|
|
0085+++900F EqualTo "M"
|
|
0085+++900F 3E 4D > ld a,number
|
|
0085+++9011 BE > cp (hl)
|
|
0085+++9012 23 > inc hl
|
|
0085+++9013 C0 > ret nz
|
|
0086+++9014 EqualTo "c"
|
|
0086+++9014 3E 63 > ld a,number
|
|
0086+++9016 BE > cp (hl)
|
|
0086+++9017 23 > inc hl
|
|
0086+++9018 C0 > ret nz
|
|
0087+++9019 EqualTo "o"
|
|
0087+++9019 3E 6F > ld a,number
|
|
0087+++901B BE > cp (hl)
|
|
0087+++901C 23 > inc hl
|
|
0087+++901D C0 > ret nz
|
|
0088+++901E EqualTo "m"
|
|
0088+++901E 3E 6D > ld a,number
|
|
0088+++9020 BE > cp (hl)
|
|
0088+++9021 23 > inc hl
|
|
0088+++9022 C0 > ret nz
|
|
0089+++9023 AnyBytes 3
|
|
0090+++9023 23 > inc hl
|
|
0090+++9024 23 > inc hl
|
|
0090+++9025 23 > inc hl
|
|
0090+++9026 7E ld a,(hl)
|
|
0091+++9027 FE 32 cp 50
|
|
0092+++9029 C8 ret z
|
|
0093+++902A FE 3C cp 60
|
|
0094+++902C 3F ccf
|
|
0095+++902D C9 ret
|
|
0096+++902E
|
|
0097+++902E display "TFC checker size: ",$-CheckFormat
|
|
0098+++902E endif
|
|
0099+++902E
|
|
0100+++902E ;HL - module addr
|
|
0101+++902E Init
|
|
0102+++902E EB exd
|
|
0103+++902F 21 0A 00 ld hl,Header.tfmptrs
|
|
0104+++9032 19 add hl,de
|
|
0105+++9033 D9 exx
|
|
0106+++9034
|
|
0107+++9034 21 3B 92 ld hl,TFM.Init
|
|
0108+++9037 11 43 92 ld de,TFM.A
|
|
0109+++903A 01 30 00 ld bc,6*TFMData
|
|
0110+++903D ED B0 ldir
|
|
0111+++903F
|
|
0112+++903F 21 5E 90 ld hl,.tfminitab
|
|
0113+++9042 01 FD 06 ld bc,128*(.tfminitab_end-.tfminitab)+#fd
|
|
0114+++9045 .tfmini0
|
|
0115+++9045 11 54 90 ld de,.tfminiHL
|
|
0116+++9048 ED A0 ldi
|
|
0117+++904A ED A0 ldi
|
|
0118+++904C D9 exx
|
|
0119+++904D 7E ld a,(hl)
|
|
0120+++904E 23 inc hl
|
|
0121+++904F E5 push hl
|
|
0122+++9050 66 ld h,(hl)
|
|
0123+++9051 6F ld l,a
|
|
0124+++9052 19 add hl,de
|
|
0125+++9053 .tfminiHL=$+1
|
|
0126+++9053 22 00 00 ld (0),hl
|
|
0127+++9056 E1 pop hl
|
|
0128+++9057 23 inc hl
|
|
0129+++9058 D9 exx
|
|
0130+++9059 10 EA djnz .tfmini0
|
|
0131+++905B
|
|
0132+++905B C3 6A 90 jp Mute
|
|
0133+++905E
|
|
0134+++905E .tfminitab
|
|
0135+++905E 43 92 DW TFM.A.addr
|
|
0136+++9060 4B 92 DW TFM.B.addr
|
|
0137+++9062 53 92 DW TFM.C.addr
|
|
0138+++9064 5B 92 DW TFM.D.addr
|
|
0139+++9066 63 92 DW TFM.E.addr
|
|
0140+++9068 6B 92 DW TFM.F.addr
|
|
0141+++906A .tfminitab_end
|
|
0142+++906A
|
|
0143+++906A Mute
|
|
0144+++906A 11 BF FF ld de,#ffbf
|
|
0145+++906D 0E FD ld c,#fd
|
|
0146+++906F CD D9 90 call selChip0
|
|
0147+++9072 CD 78 90 call .tfminiPP
|
|
0148+++9075 CD DD 90 call selChip1
|
|
0149+++9078 .tfminiPP
|
|
0150+++9078 ; 0 -> (00..0D)
|
|
0151+++9078 21 00 00 ld hl,#0000
|
|
0152+++907B 3E 0E ld a,#0e
|
|
0153+++907D CD C0 90 call .writeregsset
|
|
0154+++9080
|
|
0155+++9080 ; 0 -> (30..3F)
|
|
0156+++9080 26 30 ld h,#30
|
|
0157+++9082 3E 40 ld a,#40
|
|
0158+++9084 CD C0 90 call .writeregsset
|
|
0159+++9087
|
|
0160+++9087 ; 0 -> (50..B4)
|
|
0161+++9087 26 50 ld h,#50
|
|
0162+++9089 3E B5 ld a,#b5
|
|
0163+++908B CD C0 90 call .writeregsset
|
|
0164+++908E
|
|
0165+++908E ; 0F -> (80..8F) ;max speed to RR
|
|
0166+++908E 21 0F 80 ld hl,#800f
|
|
0167+++9091 3E 90 ld a,#90
|
|
0168+++9093 CD C0 90 call .writeregsset
|
|
0169+++9096
|
|
0170+++9096 ; 0..2 -> 28, key off
|
|
0171+++9096 ; 2 -> 27 channel 3 mode
|
|
0172+++9096 21 00 28 ld hl,#2800
|
|
0173+++9099 CD C8 90 call .writereg
|
|
0174+++909C 2C inc l
|
|
0175+++909D CD C8 90 call .writereg
|
|
0176+++90A0 2C inc l
|
|
0177+++90A1 CD C8 90 call .writereg
|
|
0178+++90A4 25 dec h
|
|
0179+++90A5 CD C8 90 call .writereg
|
|
0180+++90A8
|
|
0181+++90A8 ; 7F -> (40..4F,2F,2D)
|
|
0182+++90A8 21 7F 40 ld hl,#407f
|
|
0183+++90AB 3E 50 ld a,#50
|
|
0184+++90AD CD C0 90 call .writeregsset
|
|
0185+++90B0
|
|
0186+++90B0 26 2F ld h,#2f
|
|
0187+++90B2 CD C8 90 call .writereg
|
|
0188+++90B5
|
|
0189+++90B5 26 2D ld h,#2d
|
|
0190+++90B7 CD C8 90 call .writereg
|
|
0191+++90BA
|
|
0192+++90BA 3E FF ld a,#ff ;�몫. FM
|
|
0193+++90BC .selRegA
|
|
0194+++90BC 42 ld b,d
|
|
0195+++90BD ED 79 out (c),a
|
|
0196+++90BF C9 ret
|
|
0197+++90C0
|
|
0198+++90C0 ;H=REG start
|
|
0199+++90C0 ;L=VALUE
|
|
0200+++90C0 ;A=REG end (not inclusive)
|
|
0201+++90C0 .writeregsset
|
|
0202+++90C0 CD C8 90 call .writereg
|
|
0203+++90C3 24 inc h
|
|
0204+++90C4 BC cp h
|
|
0205+++90C5 20 F9 jr nz,.writeregsset
|
|
0206+++90C7 C9 ret
|
|
0207+++90C8 ;H=REG
|
|
0208+++90C8 ;L=VALUE
|
|
0209+++90C8 .writereg
|
|
0210+++90C8 FM.SelectReg h
|
|
0210+++90C8 42 > ld b,d
|
|
0210+++90C9 ED 70 > inf
|
|
0210+++90CB FA C9 90 > jp m,$-2
|
|
0210+++90CE ED 61 > out (c),Reg
|
|
0211+++90D0 FM.WriteReg l
|
|
0211+++90D0 43 > ld b,e
|
|
0211+++90D1 ED 70 > inf
|
|
0211+++90D3 FA D1 90 > jp m,$-2
|
|
0211+++90D6 ED 69 > out (c),Reg
|
|
0212+++90D8 C9 ret
|
|
0213+++90D9
|
|
0214+++90D9 selChip0
|
|
0215+++90D9 3E F8 ld a,statuschip0
|
|
0216+++90DB 18 DF jr Mute.selRegA
|
|
0217+++90DD
|
|
0218+++90DD selChip1
|
|
0219+++90DD 3E F9 ld a,statuschip1
|
|
0220+++90DF 18 DB jr Mute.selRegA
|
|
0221+++90E1
|
|
0222+++90E1 Play
|
|
0223+++90E1 11 BF FF ld de,#FFBF
|
|
0224+++90E4 0E FD ld c,#FD
|
|
0225+++90E6
|
|
0226+++90E6 CD D9 90 call selChip0
|
|
0227+++90E9
|
|
0228+++90E9 AF xor a
|
|
0229+++90EA 08 exa
|
|
0230+++90EB DD 21 43 92 ld ix,TFM.A
|
|
0231+++90EF CD 26 91 call PlayChannel
|
|
0232+++90F2 3E 01 ld a,1
|
|
0233+++90F4 08 exa
|
|
0234+++90F5 DD 21 4B 92 ld ix,TFM.B
|
|
0235+++90F9 CD 26 91 call PlayChannel
|
|
0236+++90FC 3E 02 ld a,2
|
|
0237+++90FE 08 exa
|
|
0238+++90FF DD 21 53 92 ld ix,TFM.C
|
|
0239+++9103 CD 26 91 call PlayChannel
|
|
0240+++9106
|
|
0241+++9106 CD DD 90 call selChip1
|
|
0242+++9109
|
|
0243+++9109 AF xor a
|
|
0244+++910A 08 exa
|
|
0245+++910B DD 21 5B 92 ld ix,TFM.D
|
|
0246+++910F CD 26 91 call PlayChannel
|
|
0247+++9112 3E 01 ld a,1
|
|
0248+++9114 08 exa
|
|
0249+++9115 DD 21 63 92 ld ix,TFM.E
|
|
0250+++9119 CD 26 91 call PlayChannel
|
|
0251+++911C 3E 02 ld a,2
|
|
0252+++911E 08 exa
|
|
0253+++911F DD 21 6B 92 ld ix,TFM.F
|
|
0254+++9123 C3 26 91 jp PlayChannel
|
|
0255+++9126
|
|
0256+++9126 ;%11111111,-disp8 = ������ ����� ����� �� ᬥ饭�� -disp8
|
|
0257+++9126 ;%111ttttt = skip 32..2 frames
|
|
0258+++9126 ;%110ddddd = slide d-16
|
|
0259+++9126 ;%11010000,frames,-disp16 = repeat block (skips = 1 frame)
|
|
0260+++9126 ;%10111111,-disp16 = ������ ����� ����� �� ᬥ饭�� -disp16
|
|
0261+++9126 ;%10NNNNNf = keyoff,[freq,]0..30 regs, keyon
|
|
0262+++9126 ;%01111111 = end
|
|
0263+++9126 ;%01111110 = begin
|
|
0264+++9126 ;%01NNNNNf = keyoff,[freq,]0..31 regs
|
|
0265+++9126 ;%00NNNNNf = [freq,]0..30 regs
|
|
0266+++9126 bb=%01111110
|
|
0267+++9126 be=%01111111
|
|
0268+++9126 ;IX - data
|
|
0269+++9126 ;DE - hi ports #FFBF
|
|
0270+++9126 ;C - low port #FD
|
|
0271+++9126 ;A' - fm channel
|
|
0272+++9126 PlayChannel
|
|
0273+++9126 DD 7E 02 ld a,(ix+TFMData.skip)
|
|
0274+++9129 3C inc a
|
|
0275+++912A C2 E9 91 jp nz,.skiper
|
|
0276+++912D DD 7E 03 ld a,(ix+TFMData.blkcnt)
|
|
0277+++9130 A7 and a
|
|
0278+++9131 28 1D jr z,.noframe
|
|
0279+++9133 DD 35 03 dec (ix+TFMData.blkcnt)
|
|
0280+++9136 20 18 jr nz,.noframe
|
|
0281+++9138 DD 6E 04 ld l,(ix+TFMData.blkretaddr)
|
|
0282+++913B DD 66 05 ld h,(ix+TFMData.blkretaddr+1)
|
|
0283+++913E 18 16 jr .tfmframe
|
|
0284+++9140 .begin
|
|
0285+++9140 DD 75 05 ld (ix+TFMData.loopaddr),l
|
|
0286+++9143 DD 74 06 ld (ix+TFMData.loopaddr+1),h
|
|
0287+++9146 18 0E jr .tfmframe
|
|
0288+++9148 .end
|
|
0289+++9148 DD 6E 05 ld l,(ix+TFMData.loopaddr)
|
|
0290+++914B DD 66 06 ld h,(ix+TFMData.loopaddr+1)
|
|
0291+++914E 18 06 jr .tfmframe
|
|
0292+++9150 .noframe
|
|
0293+++9150 DD 6E 00 ld l,(ix+TFMData.addr)
|
|
0294+++9153 DD 66 01 ld h,(ix+TFMData.addr+1)
|
|
0295+++9156 .tfmframe
|
|
0296+++9156 7E ld a,(hl)
|
|
0297+++9157 23 inc hl
|
|
0298+++9158 FE 7E cp bb
|
|
0299+++915A 28 E4 jr z,.begin
|
|
0300+++915C FE 7F cp be
|
|
0301+++915E 28 E8 jr z,.end
|
|
0302+++9160 BB cp e ;#BF
|
|
0303+++9161 D2 DC 91 jp NC,.HLskiper
|
|
0304+++9164 ;TestKeyOff
|
|
0305+++9164 F2 7D 91 jp P,.noffX
|
|
0306+++9167 F5 push af
|
|
0307+++9168 3E 28 ld a,#28
|
|
0308+++916A FM.SelectReg a
|
|
0308+++916A 42 > ld b,d
|
|
0308+++916B ED 70 > inf
|
|
0308+++916D FA 6B 91 > jp m,$-2
|
|
0308+++9170 ED 79 > out (c),Reg
|
|
0309+++9172 08 exa
|
|
0310+++9173 FM.WriteReg a ;FMChannel
|
|
0310+++9173 43 > ld b,e
|
|
0310+++9174 ED 70 > inf
|
|
0310+++9176 FA 74 91 > jp m,$-2
|
|
0310+++9179 ED 79 > out (c),Reg
|
|
0311+++917B 08 exa
|
|
0312+++917C F1 pop af
|
|
0313+++917D .noffX
|
|
0314+++917D B7 OR a
|
|
0315+++917E F5 push af
|
|
0316+++917F ;TestFreq
|
|
0317+++917F 1F RRA
|
|
0318+++9180 30 12 jr NC,.nofrqX
|
|
0319+++9182
|
|
0320+++9182 46 ld b,(hl)
|
|
0321+++9183 23 inc hl
|
|
0322+++9184 4E ld c,(hl)
|
|
0323+++9185 23 inc hl
|
|
0324+++9186 DD 70 07 ld (ix+TFMData.tfmhigh),b
|
|
0325+++9189 DD 71 06 ld (ix+TFMData.tfmlow),c
|
|
0326+++918C C5 push bc
|
|
0327+++918D E3 ex (sp),hl
|
|
0328+++918E 0E FD ld c,#FD
|
|
0329+++9190 CD FE 91 call .outTone
|
|
0330+++9193 E1 pop hl
|
|
0331+++9194
|
|
0332+++9194 .nofrqX
|
|
0333+++9194 E6 1F and #1F
|
|
0334+++9196 C4 27 92 call nz,.OutRegs
|
|
0335+++9199 CD D5 91 call .storeaddr
|
|
0336+++919C F1 pop af
|
|
0337+++919D F0 ret P
|
|
0338+++919E ;.KeyOn
|
|
0339+++919E 3E 28 ld a,#28
|
|
0340+++91A0 FM.SelectReg a
|
|
0340+++91A0 42 > ld b,d
|
|
0340+++91A1 ED 70 > inf
|
|
0340+++91A3 FA A1 91 > jp m,$-2
|
|
0340+++91A6 ED 79 > out (c),Reg
|
|
0341+++91A8 08 exa
|
|
0342+++91A9 C6 F0 add a,#F0
|
|
0343+++91AB FM.WriteReg a
|
|
0343+++91AB 43 > ld b,e
|
|
0343+++91AC ED 70 > inf
|
|
0343+++91AE FA AC 91 > jp m,$-2
|
|
0343+++91B1 ED 79 > out (c),Reg
|
|
0344+++91B3 D6 F0 sub #F0
|
|
0345+++91B5 08 exa
|
|
0346+++91B6 C9 ret
|
|
0347+++91B7
|
|
0348+++91B7 .block
|
|
0349+++91B7 7E ld a,(hl) ;N frames
|
|
0350+++91B8 ;1 now, N-1 later
|
|
0351+++91B8 ;skip command is used as 1 frame
|
|
0352+++91B8 23 inc hl
|
|
0353+++91B9 DD 77 03 ld (ix+TFMData.blkcnt),a
|
|
0354+++91BC 46 ld b,(hl)
|
|
0355+++91BD 23 inc hl
|
|
0356+++91BE 4E ld c,(hl) ;disp
|
|
0357+++91BF 23 inc hl
|
|
0358+++91C0 DD 75 04 ld (ix+TFMData.blkretaddr),l
|
|
0359+++91C3 DD 74 05 ld (ix+TFMData.blkretaddr+1),h
|
|
0360+++91C6 .subframe
|
|
0361+++91C6 09 add hl,bc
|
|
0362+++91C7 0E FD ld c,#fd
|
|
0363+++91C9 C3 56 91 jp .tfmframe
|
|
0364+++91CC
|
|
0365+++91CC .OLDfar
|
|
0366+++91CC 46 ld b,(hl)
|
|
0367+++91CD 23 inc hl
|
|
0368+++91CE .OLDnear
|
|
0369+++91CE 4E ld c,(hl)
|
|
0370+++91CF 23 inc hl
|
|
0371+++91D0 E5 push hl
|
|
0372+++91D1 CD C6 91 call .subframe
|
|
0373+++91D4 E1 pop hl
|
|
0374+++91D5 .storeaddr
|
|
0375+++91D5 DD 75 00 ld (ix+TFMData.addr),l
|
|
0376+++91D8 DD 74 01 ld (ix+TFMData.addr+1),h
|
|
0377+++91DB C9 ret
|
|
0378+++91DC .HLskiper
|
|
0379+++91DC 28 EE jr z,.OLDfar
|
|
0380+++91DE FE E0 cp %11100000
|
|
0381+++91E0 38 0B jr c,.slide
|
|
0382+++91E2 47 ld b,a
|
|
0383+++91E3 BA cp d ;#FF
|
|
0384+++91E4 28 E8 jr z,.OLDnear
|
|
0385+++91E6 CD D5 91 call .storeaddr
|
|
0386+++91E9 DD 77 02 .skiper ld (ix+TFMData.skip),a
|
|
0387+++91EC C9 ret
|
|
0388+++91ED .slide
|
|
0389+++91ED ;a=-64..-33
|
|
0390+++91ED C6 30 add a,48
|
|
0391+++91EF ;a=-16..15
|
|
0392+++91EF 28 C6 jr z,.block
|
|
0393+++91F1 DD 86 06 add a,(ix+TFMData.tfmlow)
|
|
0394+++91F4 DD 77 06 ld (ix+TFMData.tfmlow),a
|
|
0395+++91F7 CD D5 91 call .storeaddr
|
|
0396+++91FA DD 66 07 ld h,(ix+TFMData.tfmhigh)
|
|
0397+++91FD 6F ld l,a
|
|
0398+++91FE .outTone
|
|
0399+++91FE 08 exa
|
|
0400+++91FF C6 A4 add a,#a4
|
|
0401+++9201 FM.SelectReg a
|
|
0401+++9201 42 > ld b,d
|
|
0401+++9202 ED 70 > inf
|
|
0401+++9204 FA 02 92 > jp m,$-2
|
|
0401+++9207 ED 79 > out (c),Reg
|
|
0402+++9209 FM.WriteReg h
|
|
0402+++9209 43 > ld b,e
|
|
0402+++920A ED 70 > inf
|
|
0402+++920C FA 0A 92 > jp m,$-2
|
|
0402+++920F ED 61 > out (c),Reg
|
|
0403+++9211 D6 04 sub #04 ;#A0+channel
|
|
0404+++9213 FM.SelectReg a
|
|
0404+++9213 42 > ld b,d
|
|
0404+++9214 ED 70 > inf
|
|
0404+++9216 FA 14 92 > jp m,$-2
|
|
0404+++9219 ED 79 > out (c),Reg
|
|
0405+++921B FM.WriteReg l
|
|
0405+++921B 43 > ld b,e
|
|
0405+++921C ED 70 > inf
|
|
0405+++921E FA 1C 92 > jp m,$-2
|
|
0405+++9221 ED 69 > out (c),Reg
|
|
0406+++9223 D6 A0 sub #a0
|
|
0407+++9225 08 exa
|
|
0408+++9226 C9 ret
|
|
0409+++9227
|
|
0410+++9227 42 .OutRegs ld b,d ;%11111xxx
|
|
0411+++9228 WaitStatus
|
|
0411+++9228 ED 70 > inf
|
|
0411+++922A FA 28 92 > jp m,$-2
|
|
0412+++922D ED A3 outi ;reg
|
|
0413+++922F WaitStatus
|
|
0413+++922F ED 70 > inf
|
|
0413+++9231 FA 2F 92 > jp m,$-2
|
|
0414+++9234 43 ld b,e ;#BF
|
|
0415+++9235 ED A3 outi ;value
|
|
0416+++9237 3D dec a
|
|
0417+++9238 20 ED jr nz,.OutRegs ;� turbo jr=jp
|
|
0418+++923A C9 ret
|
|
0419+++923B
|
|
0420+++923B TFM.Init TFMData 0,-1,0
|
|
0420+++923B 0000FF0000000000
|
|
0421+++9243 TFM.A TFMData
|
|
0421+++9243 0000000000000000
|
|
0422+++924B TFM.B TFMData
|
|
0422+++924B 0000000000000000
|
|
0423+++9253 TFM.C TFMData
|
|
0423+++9253 0000000000000000
|
|
0424+++925B TFM.D TFMData
|
|
0424+++925B 0000000000000000
|
|
0425+++9263 TFM.E TFMData
|
|
0425+++9263 0000000000000000
|
|
0426+++926B TFM.F TFMData
|
|
0426+++926B 0000000000000000
|
|
0427+++9273
|
|
0428+++9273 endmod
|
|
0429+++9273 TFC.End
|
|
0430+++9273
|
|
0431+++9273 display "TFC module size: ",TFC.End-TFC.Start
|
|
0432+++9273
|
|
0433+++9273 endif
|
|
0434+++9273
|
|
0422++ 9273 MTC.End
|
|
0423++ 9273 display "MTC module size: ",MTC.End-MTC.Start
|
|
0424++ 9273
|
|
0425++ 9273 endif
|
|
0426++ 9273
|
|
0078+ 9273 UNI.End
|
|
0079+ 9273 display "UNI module size: ",UNI.End-UNI.Init
|
|
0080+ 9273 endif
|
|
0081+ 9273
|
|
0013 9273
|
|
0014 9273 module
|
|
0015 9273 ;incbin MTC_CYBERMOTION
|
|
0016 9273 ;incbin MTC_DRUMTEST
|
|
0017 9273 ;incbin MTC_MUG
|
|
0018 9273 incbin MTC_MYSTICAL
|
|
0019 B60B ;incbin MTC_NEWOLD
|
|
0020 B60B ;incbin MTC_SNEGURKA
|
|
0021 B60B ;incbin TFC_CYBERMOTION
|
|
0022 B60B ;incbin TFC_DRUMTEST
|
|
0023 B60B ;incbin TFC_MUG
|
|
0024 B60B ;incbin TFC_MYSTICAL
|
|
0025 B60B ;incbin TFC_NEWOLD
|
|
0026 B60B ;incbin TFC_SNEGURKA
|
|
0027 B60B ;incbin PT3_DRUMTEST
|
|
0028 B60B ;incbin PT3_MYSTICAL
|
|
0029 B60B ;incbin PT3_NEWOLD
|
|
0030 B60B ;incbin PT3_SNEGURKA
|
|
0031 B60B ;incbin TS_INEEDREST
|
|
0032 B60B ;incbin PT2_PITON
|
|
0033 B60B
|
|
0034 B60B savesna "test_uni.sna",begin
|
|
0035 B60B savebin "../uni_8000.bin",player,module-player
|
|
0036 B60B
|
|
|
|
Value Label
|
|
------ - -----------------------------------------------------------
|
|
0x6000 begin
|
|
0x8000 init
|
|
0x600D begin.loop
|
|
0x6014 begin.delay
|
|
0x8005 play
|
|
0x8008 mute
|
|
0x602C X begin.fail
|
|
0x8000 player
|
|
0x9273 UNI.End
|
|
0x800B UNI.Init
|
|
0x8005 UNI.Play
|
|
0x8008 UNI.Mute
|
|
0x8028 UNI.Init.tryMTC
|
|
0x8039 UNI.Init.tryTFC
|
|
0x804A UNI.Init.tryTS
|
|
0x805B UNI.Init.tryPT2
|
|
0x806C UNI.Init.tryPT3
|
|
0x8020 UNI.Init.addr
|
|
0x807D MTC.CheckFormat
|
|
0x809C MTC.Init
|
|
0x80D9 MTC.Play
|
|
0x80F7 MTC.Mute
|
|
0x9005 TFC.CheckFormat
|
|
0x902E TFC.Init
|
|
0x90E1 TFC.Play
|
|
0x906A TFC.Mute
|
|
0x8FBC TS.CheckFormat
|
|
0x8FB7 TS.Init
|
|
0x8B88 TS.Play
|
|
0x835A TS.Mute
|
|
0x8F7C PT2.CheckFormat
|
|
0x8F77 PT2.Init
|
|
0x8B88 PT2.Play
|
|
0x835A PT2.Mute
|
|
0x8F30 PT3.CheckFormat
|
|
0x8F2B PT3.Init
|
|
0x8B88 PT3.Play
|
|
0x835A PT3.Mute
|
|
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
|
|
0x807D MTC.Start
|
|
0x814E MTC.Streams
|
|
0x8117 MTC.ParseChunk
|
|
0x0000 MTC.ChunkId.MTC1
|
|
0x821C MTC.ParseMTC1
|
|
0x82E6 MTC.MergeStreams
|
|
0x80B3 MTC.Init.initstreams
|
|
0x8115 MTC.jp_bc
|
|
0x80DD MTC.Play.playstreams
|
|
0x80FB MTC.Mute.mutestreams
|
|
0x8200 MTC.ChunkId
|
|
0x811A MTC.ParseChunk.checkid
|
|
0x8145 MTC.ParseChunk.matched
|
|
0x001C MTC.ChunkId.Unknown
|
|
0x8147 MTC.ParseChunk.getdata
|
|
0x0003 MTC.MinStreamsCount
|
|
0x816F 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
|
|
0x0010 MTC.MaxStreamsCount
|
|
0x821F MTC.ParseMTC1.nextchunk
|
|
0x8237 MTC.ParseTrack
|
|
0x823A MTC.ParseTrack.nextchunk
|
|
0x8256 MTC.ParseData
|
|
0x8262 MTC.ParseTFC
|
|
0x8284 MTC.ParseTS
|
|
0x8291 MTC.ParsePT2
|
|
0x82A4 MTC.ParsePT3
|
|
0x82C3 MTC.FillStream
|
|
0x8279 MTC.AddStream
|
|
0x8FCD TS.CheckFormatKnownSize
|
|
0x82B7 MTC.FillTS
|
|
0x82BD MTC.FillPts
|
|
0x8B88 PTS.PLAY
|
|
0x835A PTS.MUTE
|
|
0x82F2 MTC.Sort
|
|
0x82FA MTC.Sort.cycle
|
|
0x8319 MTC.Sort.end
|
|
0x8312 MTC.Sort.next
|
|
0x8306 MTC.Sort.swapitems
|
|
0x831D X MTC.Merge
|
|
0x8323 MTC.Merge.cycle
|
|
0x8331 MTC.Merge.perform
|
|
0x834A MTC.Merge.generic
|
|
0x834C 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
|
|
0x8359 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
|
|
0x8359 PTS.SETUP
|
|
0x8C6D PTS.VARS1
|
|
0x0079 PTS.VRS.AYREGS
|
|
0x8CF4 PTS.VARS2
|
|
0x8B9C PTS.ROUT
|
|
0x836C PTS.INIT
|
|
0x8C6C PTS.VARS
|
|
0x8D7B PTS.VAR0END
|
|
0x0062 PTS.VRS.AdInPtA
|
|
0x8415 PTS.I_PT2
|
|
0x855E PTS.INITPT3
|
|
0x8952 PTS.e_
|
|
0x8931 PTS.SamCnv
|
|
0x88FC PTS.OrnCP
|
|
0x8928 PTS.SamCP
|
|
0x88FF PTS.OrnLD
|
|
0x892B PTS.SamLD
|
|
0x8922 PTS.SamClc2
|
|
0x83B9 PTS.L20
|
|
0x83BB PTS.L21
|
|
0x87CF PTS.Version
|
|
0x840A PTS.NOTS
|
|
0x83FE PTS.TwoPT3s
|
|
0x0087 PTS.VRS
|
|
0x0002 PTS.VRS.ModNum
|
|
0x8A93 PTS.TSSub
|
|
0x8401 PTS.AlCoTS_
|
|
0x8C6C PTS.is_ts
|
|
0x871B PTS.PT3PD
|
|
0x8C34 PTS.PT3EMPTYORN
|
|
0x845D PTS.INITCOMMON
|
|
0x8596 PTS.INITPT2
|
|
0x8454 PTS.NOTS2
|
|
0x8655 PTS.PT2PD
|
|
0x8D8A PTS.PT2EMPTYORN
|
|
0x8606 PTS.PTDEC
|
|
0x8A95 PTS.PsCalc
|
|
0x8C37 PTS.T_PACK
|
|
0x8D7B PTS.T1_
|
|
0x846B PTS.TP_0
|
|
0x8477 PTS.TP_1
|
|
0x847E 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
|
|
0x8BE4 PTS.NT_DATA
|
|
0x84EF PTS.L3
|
|
0x8BF4 PTS.T_
|
|
0x8E6B PTS.NT_
|
|
0x84DE PTS.L1
|
|
0x84EB PTS.L2
|
|
0x8C00 PTS.TCOLD_1
|
|
0x8510 PTS.CORR_1
|
|
0x8525 PTS.TC_EXIT
|
|
0x851E PTS.CORR_2
|
|
0x8534 PTS.M1
|
|
0x8545 PTS.M2
|
|
0x8D6B PTS.VT_
|
|
0x853D PTS.INITV2
|
|
0x8544 PTS.INITV1
|
|
0x8558 PTS.M3
|
|
0x85D1 PTS.SETMDAD
|
|
0x006C PTS.VRS.Delay
|
|
0x85DF PTS.SETCPPT
|
|
0x85E6 PTS.SETLPPT
|
|
0x85CA PTS.SETPTPT
|
|
0x85D8 PTS.SETORPT
|
|
0x858F 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
|
|
0x85ED PTS.SETENBS
|
|
0x0077 PTS.VRS.EnvBase
|
|
0x85F4 PTS.SETESLD
|
|
0x0070 PTS.VRS.CurESld
|
|
0x85FB PTS.GETIX
|
|
0x8602 PTS.PTDECOD
|
|
0x8608 PTS.PD2_SAM
|
|
0x889E PTS.SETSAM
|
|
0x8657 PTS.PD2_LOOP
|
|
0x860D PTS.PD2_EOff
|
|
0x0014 PTS.CHP.Env_En
|
|
0x8612 PTS.PD2_ENV
|
|
0x8624 PTS.PD2_ORN
|
|
0x887F PTS.SETORN
|
|
0x8629 PTS.PD2_SKIP
|
|
0x0011 PTS.CHP.NNtSkp
|
|
0x862F PTS.PD2_VOL
|
|
0x001C PTS.CHP.Volume
|
|
0x8638 PTS.PD2_DEL
|
|
0x884F PTS.C_DELAY
|
|
0x863D PTS.PD2_GLIS
|
|
0x0015 PTS.CHP.Flags
|
|
0x0016 PTS.CHP.TnSlDl
|
|
0x0005 PTS.CHP.TSlCnt
|
|
0x0017 PTS.CHP.TSlStp
|
|
0x8656 PTS.PD2_LP2
|
|
0x869C PTS.PD2_REL
|
|
0x86A1 PTS.PD2_NOTE
|
|
0x877E PTS.PD_FIN
|
|
0x868C PTS.PD2_PORT
|
|
0x8697 PTS.PD2_STOP
|
|
0x0003 PTS.CHP.CrNsSl
|
|
0x86CD PTS.PD2_EXIT
|
|
0x0012 PTS.CHP.Note
|
|
0x87B7 PTS.PrNote
|
|
0x86CC PTS.NOGLIS2
|
|
0x86C8 PTS.NOPORT2
|
|
0x87DE PTS.LoStep
|
|
0x8799 PTS.SETPORT
|
|
0x0001 PTS.CHP.PsInSm
|
|
0x0000 PTS.CHP.PsInOr
|
|
0x0006 PTS.CHP.CrTnSl
|
|
0x86DC PTS.PD_OrSm
|
|
0x86E3 PTS.PD_SAM_
|
|
0x86E6 PTS.PD_SAM
|
|
0x872A PTS.PD_LOOP
|
|
0x86EB PTS.PD_VOL
|
|
0x872D PTS.PD_LP2
|
|
0x86F4 PTS.PD_EOff
|
|
0x86FC PTS.PD_SorE
|
|
0x8706 PTS.PD_ENV
|
|
0x8864 PTS.SETENV
|
|
0x870B PTS.PD_ORN
|
|
0x8710 PTS.PD_ESAM
|
|
0x87D4 PTS.PrSlide
|
|
0x875F PTS.PD_REL
|
|
0x8765 PTS.PD_NOTE
|
|
0x875A PTS.PD_NOIS
|
|
0x88BA PTS.SPCCOMS
|
|
0x0074 PTS.VRS.Ns_Base
|
|
0x876D PTS.PD_RES
|
|
0x877B PTS.PDSP_
|
|
0x8785 PTS.C_PORTM
|
|
0x0013 PTS.CHP.SlToNt
|
|
0x0019 PTS.CHP.TnDelt
|
|
0x87DD PTS.OLDPRTM
|
|
0x87E3 PTS.NOSIG
|
|
0x87ED PTS.SET_STP
|
|
0x000A PTS.CHP.COnOff
|
|
0x87F9 PTS.C_GLISS
|
|
0x880C PTS.GL36
|
|
0x8816 PTS.C_SMPOS
|
|
0x881C PTS.C_ORPOS
|
|
0x8822 PTS.C_VIBRT
|
|
0x000B PTS.CHP.OnOffD
|
|
0x000C PTS.CHP.OffOnD
|
|
0x883A PTS.C_ENGLS
|
|
0x0072 PTS.VRS.Env_Del
|
|
0x0073 PTS.VRS.CurEDel
|
|
0x006E PTS.VRS.ESldAdd
|
|
0x889D PTS.C_NOP
|
|
0x000F PTS.CHP.SamPtr
|
|
0x88DA PTS.CHREGS
|
|
0x8B17 PTS.Ampl
|
|
0x8A2D PTS.CH_EXIT
|
|
0x8976 PTS.CSP_
|
|
0x8900 PTS.CH_ORPS
|
|
0x890B PTS.CH_NTP
|
|
0x8911 PTS.CH_NOK
|
|
0x892C PTS.CH_SMPS
|
|
0x0008 PTS.CHP.TnAcc
|
|
0x8963 PTS.CH_NOAC
|
|
0x89BE PTS.CH_AMP
|
|
0x89A9 PTS.CH_STPP
|
|
0x0002 PTS.CHP.CrAmSl
|
|
0x89D8 PTS.CH_NOAM
|
|
0x89D0 PTS.CH_AMIN
|
|
0x89D5 PTS.CH_SVAM
|
|
0x89E1 PTS.CH_APOS
|
|
0x89E7 PTS.CH_VOL
|
|
0x89F2 X PTS.CH_ENV
|
|
0x89F9 PTS.CH_NOEN
|
|
0x8A1B PTS.NO_ENSL
|
|
0x0004 PTS.CHP.CrEnSl
|
|
0x8A13 PTS.NO_ENAC
|
|
0x0076 PTS.VRS.AddToEn
|
|
0x8A29 PTS.CH_MIX
|
|
0x0075 PTS.VRS.AddToNs
|
|
0x8A4D PTS.CH_ONDL
|
|
0x8A51 PTS.PLAY_
|
|
0x8B04 PTS.PL2
|
|
0x8AD0 PTS.PL1B
|
|
0x8AC4 PTS.PL1A
|
|
0x8A88 PTS.PLNLP
|
|
0x8A95 PTS.NoAlCo
|
|
0x8AC1 PTS.PSP_
|
|
0x0064 PTS.VRS.AdInPtB
|
|
0x0066 PTS.VRS.AdInPtC
|
|
0x8AE7 PTS.PL1C
|
|
0x8AFE PTS.PL1D
|
|
0x8B9C PTS.PL_nts
|
|
0x8BA7 X PTS.r_nts
|
|
0x8BB8 PTS.ROUT_
|
|
0x8BBC PTS.LOUT
|
|
0x8DAD PTS.T_NEW_0
|
|
0x8C1E PTS.TCNEW_0
|
|
0x8DAD PTS.T_OLD_0
|
|
0x8BF4 PTS.TCOLD_0
|
|
0x8D7B PTS.T_NEW_1
|
|
0x8C00 PTS.TCNEW_1
|
|
0x8D7B PTS.T_OLD_1
|
|
0x8DC5 PTS.T_NEW_2
|
|
0x8C29 PTS.TCNEW_2
|
|
0x8D93 PTS.T_OLD_2
|
|
0x8C02 PTS.TCOLD_2
|
|
0x8DAB PTS.T_NEW_3
|
|
0x8C14 PTS.TCNEW_3
|
|
0x8DAB PTS.T_OLD_3
|
|
0x8C15 PTS.TCOLD_3
|
|
0x001D PTS.CHP
|
|
0x0000 X PTS.VRS.CurPos
|
|
0x0001 X PTS.VRS.PosSub
|
|
0x8F2B X PTS.VARSEND
|
|
0x8F2B 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
|
|
0x8F2B PT3.Start
|
|
0x8F4B PT3.CheckFormat.samples
|
|
0x8F55 PT3.CheckFormat.ornaments
|
|
0x8F65 PT3.CheckFormat.positions
|
|
0x8F6A PT3.CheckFormat.div3
|
|
0x8F72 PT3.CheckFormat.posok
|
|
0x8F74 X PT3.CheckFormat.fail
|
|
0x8F77 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
|
|
0x8F77 PT2.Start
|
|
0x8F8D PT2.CheckFormat.samorns
|
|
0x8FA9 PT2.CheckFormat.positions
|
|
0x8FB4 X PT2.CheckFormat.fail
|
|
0x8FB7 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
|
|
0x8FB7 TS.Start
|
|
0x8FBF TS.CheckFormat.findfooter
|
|
0x8FCE TS.CheckFooter
|
|
0x8FFA TS.End
|
|
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
|
|
0x8FFA TFC.Start
|
|
0x9273 TFC.End
|
|
0x923B TFC.TFM.Init
|
|
0x9243 TFC.TFM.A
|
|
0x905E TFC.Init.tfminitab
|
|
0x906A TFC.Init.tfminitab_end
|
|
0x9045 TFC.Init.tfmini0
|
|
0x9054 TFC.Init.tfminiHL
|
|
0x9243 TFC.TFM.A.addr
|
|
0x924B TFC.TFM.B.addr
|
|
0x9253 TFC.TFM.C.addr
|
|
0x925B TFC.TFM.D.addr
|
|
0x9263 TFC.TFM.E.addr
|
|
0x926B TFC.TFM.F.addr
|
|
0x90D9 TFC.selChip0
|
|
0x9078 TFC.Mute.tfminiPP
|
|
0x90DD TFC.selChip1
|
|
0x90C0 TFC.Mute.writeregsset
|
|
0x90C8 TFC.Mute.writereg
|
|
0x90BC TFC.Mute.selRegA
|
|
0x9126 TFC.PlayChannel
|
|
0x924B TFC.TFM.B
|
|
0x9253 TFC.TFM.C
|
|
0x925B TFC.TFM.D
|
|
0x9263 TFC.TFM.E
|
|
0x926B TFC.TFM.F
|
|
0x007E TFC.bb
|
|
0x007F TFC.be
|
|
0x91E9 TFC.PlayChannel.skiper
|
|
0x9150 TFC.PlayChannel.noframe
|
|
0x9156 TFC.PlayChannel.tfmframe
|
|
0x9140 TFC.PlayChannel.begin
|
|
0x9148 TFC.PlayChannel.end
|
|
0x91DC TFC.PlayChannel.HLskiper
|
|
0x917D TFC.PlayChannel.noffX
|
|
0x9194 TFC.PlayChannel.nofrqX
|
|
0x91FE TFC.PlayChannel.outTone
|
|
0x9227 TFC.PlayChannel.OutRegs
|
|
0x91D5 TFC.PlayChannel.storeaddr
|
|
0x91B7 TFC.PlayChannel.block
|
|
0x91C6 TFC.PlayChannel.subframe
|
|
0x91CC TFC.PlayChannel.OLDfar
|
|
0x91CE TFC.PlayChannel.OLDnear
|
|
0x91ED TFC.PlayChannel.slide
|
|
0x923B X TFC.TFM.Init.addr
|
|
0x923D X TFC.TFM.Init.skip
|
|
0x923E X TFC.TFM.Init.blkcnt
|
|
0x923F X TFC.TFM.Init.blkretaddr
|
|
0x9240 X TFC.TFM.Init.loopaddr
|
|
0x9241 X TFC.TFM.Init.tfmlow
|
|
0x9242 X TFC.TFM.Init.tfmhigh
|
|
0x9245 X TFC.TFM.A.skip
|
|
0x9246 X TFC.TFM.A.blkcnt
|
|
0x9247 X TFC.TFM.A.blkretaddr
|
|
0x9248 X TFC.TFM.A.loopaddr
|
|
0x9249 X TFC.TFM.A.tfmlow
|
|
0x924A X TFC.TFM.A.tfmhigh
|
|
0x924D X TFC.TFM.B.skip
|
|
0x924E X TFC.TFM.B.blkcnt
|
|
0x924F X TFC.TFM.B.blkretaddr
|
|
0x9250 X TFC.TFM.B.loopaddr
|
|
0x9251 X TFC.TFM.B.tfmlow
|
|
0x9252 X TFC.TFM.B.tfmhigh
|
|
0x9255 X TFC.TFM.C.skip
|
|
0x9256 X TFC.TFM.C.blkcnt
|
|
0x9257 X TFC.TFM.C.blkretaddr
|
|
0x9258 X TFC.TFM.C.loopaddr
|
|
0x9259 X TFC.TFM.C.tfmlow
|
|
0x925A X TFC.TFM.C.tfmhigh
|
|
0x925D X TFC.TFM.D.skip
|
|
0x925E X TFC.TFM.D.blkcnt
|
|
0x925F X TFC.TFM.D.blkretaddr
|
|
0x9260 X TFC.TFM.D.loopaddr
|
|
0x9261 X TFC.TFM.D.tfmlow
|
|
0x9262 X TFC.TFM.D.tfmhigh
|
|
0x9265 X TFC.TFM.E.skip
|
|
0x9266 X TFC.TFM.E.blkcnt
|
|
0x9267 X TFC.TFM.E.blkretaddr
|
|
0x9268 X TFC.TFM.E.loopaddr
|
|
0x9269 X TFC.TFM.E.tfmlow
|
|
0x926A X TFC.TFM.E.tfmhigh
|
|
0x926D X TFC.TFM.F.skip
|
|
0x926E X TFC.TFM.F.blkcnt
|
|
0x926F X TFC.TFM.F.blkretaddr
|
|
0x9270 X TFC.TFM.F.loopaddr
|
|
0x9271 X TFC.TFM.F.tfmlow
|
|
0x9272 X TFC.TFM.F.tfmhigh
|
|
0x9273 MTC.End
|
|
0x9273 module
|