' ' SIDcog demonstartion. ' A minimalistic and stupid play routine playing a stupid little tune. ;) ' OBJ ios: "reg-ios" CON _CLKMODE = XTAL1 + PLL16X _XINFREQ = 5_000_000 SIDMASK = %00000000_00000000_00000000_00010000 playRate = 26 'Hz VAR DAT 'PARAMETER PUB main ios.start 'ios initialisieren if (ios.admgetspec & SIDMASK) play else ios.print(@err1) ios.stop PRI play|i, note, channel, musicPointer 'Lp, Bp, Hp ios.sid1_setFilterType(true,false,false) 'Enable lowpass filter 'Ch1, Ch2, Ch3 ios.sid1_setFilterMask(true,false,false) 'Enable filter on the bass channel (channel1) ios.sid1_setWaveform(0,ios#scog_square) 'Set waveform type on channel1 to Square wave ios.sid1_setPWM(0,1928) 'Set the pulse width on channel1 to 47:53 ios.sid1_setADSR(0,2,5,9,6) 'Set Envelope on channel1 ios.sid1_setWaveform(1,ios#scog_noise) 'Set waveform type on channel2 to Noise (drum sound) ios.sid1_setADSR(1,0,8,4,7) 'Set Envelope on channel2 ios.sid1_setWaveform(2,ios#scog_saw) 'Set waveform type on channel2 to Saw wave ios.sid1_setADSR(2,7,4,8,9) 'Set Envelope on channel3 ios.sid1_setVolume(15) 'Set volume to max musicPointer := -1 ios.printnl repeat waitcnt(cnt+(clkfreq/playRate)) repeat channel from 0 to 2 note := music[++musicPointer] ios.printhex(note,2) ios.printchar(":") if note == 255 ' Restart tune if note =255 note := music[musicPointer := 0] if note ' Note on if note >0 ios.sid1_noteOn(channel,note2freq(note)) else ios.sid1_noteOff(channel) ' Note off if note =0 ios.printhex(music[++musicPointer],2) ios.sid1_setCutoff(music[musicPointer]<<3) ' Update cutoff frequency ios.printnl until ios.key ios.sid_mute(1) PUB note2freq(note) | octave octave := note/12 note -= octave*12 return (noteTable[note]>>(8-octave)) DAT err1 byte 13,"Administra-Code unterstützt keine SID-Emulation!",13,0 DAT noteTable word 16350, 17320, 18350, 19450, 20600, 21830, 23120, 24500, 25960, 27500, 29140, 30870 DAT 'sounddaten 'Ch1,Ch2,Ch3,cutoff music byte 50, 0 , 0, 0 byte 50, 0 , 0, 1 byte 50, 0 , 0, 2 byte 0 , 0 , 0, 3 byte 50, 0 , 0, 4 byte 0 , 0 , 0, 5 byte 0 , 0 , 0, 6 byte 0 , 0 , 0, 7 byte 62, 0 , 0, 8 byte 0 , 0 , 0, 9 byte 0 , 0 , 0, 10 byte 0 , 0 , 0, 11 byte 50, 0 , 0, 12 byte 50, 0 , 0, 13 byte 0 , 0 , 0, 14 byte 0 , 0 , 0, 15 byte 50, 0 , 0, 16 byte 0 , 0 , 0, 17 byte 0 , 0 , 0, 18 byte 0 , 0 , 0, 19 byte 62, 0 , 0, 20 byte 0 , 0 , 0, 21 byte 0 , 0 , 0, 22 byte 0 , 0 , 0, 23 byte 50, 0 , 0, 24 byte 50, 0 , 0, 25 byte 0 , 0 , 0, 26 byte 0 , 0 , 0, 27 byte 62, 0 , 0, 28 byte 0 , 0 , 0, 29 byte 62, 0 , 0, 30 byte 0 , 0 , 0, 31 byte 55, 0 , 0, 32 byte 55, 0 , 0, 33 byte 55, 0 , 0, 34 byte 0 , 0 , 0, 35 byte 55, 0 , 0, 36 byte 0 , 0 , 0, 37 byte 0 , 0 , 0, 38 byte 0 , 0 , 0, 39 byte 65, 0 , 0, 40 byte 0 , 0 , 0, 41 byte 0 , 0 , 0, 42 byte 0 , 0 , 0, 43 byte 55, 0 , 0, 44 byte 55, 0 , 0, 45 byte 0 , 0 , 0, 46 byte 0 , 0 , 0, 47 byte 55, 0 , 0, 48 byte 0 , 0 , 0, 49 byte 0 , 0 , 0, 50 byte 0 , 0 , 0, 51 byte 65, 0 , 0, 52 byte 0 , 0 , 0, 53 byte 0 , 0 , 0, 54 byte 0 , 0 , 0, 55 byte 55, 0 , 0, 56 byte 55, 0 , 0, 57 byte 0 , 0 , 0, 58 byte 0 , 0 , 0, 59 byte 62, 0 , 0, 60 byte 0 , 0 , 0, 61 byte 55, 0 , 0, 62 byte 0 , 0 , 0, 63 byte 50, 0 , 0, 64 byte 0 , 0 , 0, 65 byte 50, 0 , 0, 66 byte 0 , 0 , 0, 67 byte 50, 0 , 0, 68 byte 0 , 0 , 0, 69 byte 0 , 0 , 0, 70 byte 0 , 0 , 0, 71 byte 62, 0 , 0, 72 byte 0 , 0 , 0, 73 byte 0 , 0 , 0, 74 byte 0 , 0 , 0, 75 byte 50, 0 , 0, 76 byte 50, 0 , 0, 77 byte 0 , 0 , 0, 78 byte 0 , 0 , 0, 79 byte 50, 0 , 0, 80 byte 0 , 0 , 0, 81 byte 0 , 0 , 0, 82 byte 0 , 0 , 0, 83 byte 62, 0 , 0, 84 byte 0 , 0 , 0, 85 byte 0 , 0 , 0, 86 byte 0 , 0 , 0, 87 byte 50, 0 , 0, 88 byte 50, 0 , 0, 89 byte 0 , 0 , 0, 90 byte 0 , 0 , 0, 91 byte 62, 0 , 0, 92 byte 0 , 0 , 0, 93 byte 62, 0 , 0, 94 byte 0 , 0 , 0, 95 byte 60, 0 , 0, 96 byte 60, 0 , 0, 97 byte 60, 0 , 0, 98 byte 0 , 0 , 0, 99 byte 60, 0 , 0, 100 byte 0 , 0 , 0, 101 byte 0 , 0 , 0, 102 byte 0 , 0 , 0, 103 byte 67, 0 , 0, 104 byte 0 , 0 , 0, 105 byte 0 , 0 , 0, 106 byte 0 , 0 , 0, 107 byte 60, 0 , 0, 108 byte 60, 0 , 0, 109 byte 0 , 0 , 0, 110 byte 0 , 0 , 0, 111 byte 55, 0 , 0, 112 byte 0 , 0 , 0, 113 byte 0 , 0 , 0, 114 byte 0 , 0 , 0, 115 byte 67, 0 , 0, 116 byte 0 , 0 , 0, 117 byte 0 , 0 , 0, 118 byte 0 , 0 , 0, 119 byte 55, 0 , 0, 120 byte 55, 0 , 0, 121 byte 0 , 0 , 0, 122 byte 0 , 0 , 0, 123 byte 67, 0 , 0, 124 byte 0 , 0 , 0, 125 byte 67, 0 , 0, 126 byte 0 , 0 , 0, 127 '------------------------------------ byte 50, 60, 0, 128 byte 50, 60, 0, 129 byte 50, 0 , 0, 130 byte 0 , 0 , 0, 131 byte 50, 0 , 0, 132 byte 0 , 0 , 0, 133 byte 0 , 0 , 0, 134 byte 0 , 0 , 0, 135 byte 62, 80, 0, 136 byte 0 , 0 , 0, 137 byte 0 , 0 , 0, 138 byte 0 , 0 , 0, 139 byte 50, 0 , 0, 140 byte 50, 0 , 0, 141 byte 0 , 0 , 0, 142 byte 0 , 0 , 0, 143 byte 50, 60, 0, 144 byte 0 , 60, 0, 145 byte 0 , 0 , 0, 146 byte 0 , 0 , 0, 147 byte 62, 60, 0, 148 byte 0 , 60, 0, 149 byte 0 , 0 , 0, 150 byte 0 , 0 , 0, 151 byte 50, 80, 0, 152 byte 50, 0 , 0, 153 byte 0 , 0 , 0, 154 byte 0 , 0 , 0, 155 byte 62, 0 , 0, 156 byte 0 , 0 , 0, 157 byte 62, 0 , 0, 158 byte 0 , 0 , 0, 159 byte 55, 60, 0, 160 byte 55, 60, 0, 161 byte 55, 0 , 0, 162 byte 0 , 0 , 0, 163 byte 55, 0 , 0, 164 byte 0 , 0 , 0, 165 byte 0 , 0 , 0, 166 byte 0 , 0 , 0, 167 byte 65, 80, 0, 168 byte 0 , 0 , 0, 169 byte 0 , 0 , 0, 170 byte 0 , 0 , 0, 171 byte 55, 0 , 0, 172 byte 55, 0 , 0, 173 byte 0 , 0 , 0, 174 byte 0 , 0 , 0, 175 byte 55, 60, 0, 176 byte 0 , 60, 0, 177 byte 0 , 0 , 0, 178 byte 0 , 0 , 0, 179 byte 65, 60, 0, 180 byte 0 , 60, 0, 181 byte 0 , 0 , 0, 182 byte 0 , 0 , 0, 183 byte 55, 80, 0, 184 byte 55, 0 , 0, 185 byte 0 , 0 , 0, 186 byte 0 , 0 , 0, 187 byte 62, 80, 0, 188 byte 0 , 0 , 0, 189 byte 55, 80, 0, 190 byte 0 , 0 , 0, 191 byte 50, 60, 0, 192 byte 0 , 60, 0, 193 byte 50, 0 , 0, 194 byte 0 , 0 , 0, 195 byte 50, 0 , 0, 196 byte 0 , 0 , 0, 197 byte 0 , 0 , 0, 198 byte 0 , 0 , 0, 199 byte 62, 80, 0, 200 byte 0 , 0 , 0, 201 byte 0 , 0 , 0, 202 byte 0 , 0 , 0, 203 byte 50, 0 , 0, 204 byte 50, 0 , 0, 205 byte 0 , 0 , 0, 206 byte 0 , 0 , 0, 207 byte 50, 60, 0, 208 byte 0 , 60, 0, 209 byte 0 , 0 , 0, 210 byte 0 , 0 , 0, 211 byte 62, 60, 0, 212 byte 0 , 60, 0, 213 byte 0 , 0 , 0, 214 byte 0 , 0 , 0, 215 byte 50, 80, 0, 216 byte 50, 0 , 0, 217 byte 0 , 0 , 0, 218 byte 0 , 0 , 0, 219 byte 62, 0 , 0, 220 byte 0 , 0 , 0, 221 byte 62, 0 , 0, 222 byte 0 , 0 , 0, 223 byte 60, 60, 0, 224 byte 60, 60, 0, 225 byte 60, 0 , 0, 226 byte 0 , 0 , 0, 227 byte 60, 0 , 0, 228 byte 0 , 0 , 0, 229 byte 0 , 0 , 0, 230 byte 0 , 0 , 0, 231 byte 67, 80, 0, 232 byte 0 , 0 , 0, 233 byte 0 , 0 , 0, 234 byte 0 , 0 , 0, 235 byte 60, 0 , 0, 236 byte 60, 0 , 0, 237 byte 0 , 0 , 0, 238 byte 0 , 0 , 0, 239 byte 55, 60, 0, 240 byte 0 , 60, 0, 241 byte 0 , 0 , 0, 242 byte 0 , 0 , 0, 243 byte 67, 0 , 0, 244 byte 0 , 0 , 0, 245 byte 0 , 60, 0, 246 byte 0 , 0 , 0, 247 byte 55, 80, 0, 248 byte 55, 0 , 0, 249 byte 0 , 60, 0, 250 byte 0 , 0 , 0, 251 byte 67, 80, 0, 252 byte 0 , 0 , 0, 253 byte 67, 80, 0, 254 byte 0 , 0 , 0, 255 '------------------------------------ byte 50, 60, 0 , 255 byte 50, 60, 0 , 128 byte 50, 0 , 0 , 64 byte 0 , 0 , 0 , 32 byte 50, 0 , 0 , 255 byte 0 , 0 , 0 , 128 byte 0 , 0 , 0 , 64 byte 0 , 0 , 0 , 32 byte 62, 80, 86, 255 byte 0 , 0 , 86, 128 byte 0 , 0 , 86, 64 byte 0 , 0 , 86, 32 byte 50, 0 , 0 , 255 byte 50, 0 , 0 , 128 byte 0 , 0 , 0 , 64 byte 0 , 0 , 0 , 32 byte 50, 60, 86, 255 byte 0 , 60, 86, 128 byte 0 , 0 , 0 , 64 byte 0 , 0 , 0 , 32 byte 62, 60, 93, 255 byte 0 , 60, 93, 128 byte 0 , 0 , 93, 64 byte 0 , 0 , 93, 32 byte 50, 80, 93, 255 byte 50, 0 , 93, 128 byte 0 , 0 , 93, 64 byte 0 , 0 , 93, 32 byte 62, 0 , 93, 255 byte 0 , 0 , 93, 128 byte 62, 0 , 0 , 255 byte 0 , 0 , 0 , 128 byte 55, 60, 79, 255 byte 55, 60, 79, 128 byte 55, 0 , 79, 64 byte 0 , 0 , 79, 32 byte 55, 0 , 79, 255 byte 0 , 0 , 79, 128 byte 0 , 0 , 79, 64 byte 0 , 0 , 79, 32 byte 65, 80, 0 , 255 byte 0 , 0 , 0 , 128 byte 0 , 0 , 0 , 64 byte 0 , 0 , 0 , 32 byte 55, 0 , 0 , 255 byte 55, 0 , 0 , 128 byte 0 , 0 , 0 , 64 byte 0 , 0 , 0 , 32 byte 55, 60, 77, 255 byte 0 , 60, 77, 128 byte 0 , 0 , 77, 64 byte 0 , 0 , 77, 32 byte 65, 60, 77, 255 byte 0 , 60, 77, 128 byte 0 , 0 , 0 , 64 byte 0 , 0 , 0 , 32 byte 55, 80, 83, 255 byte 55, 0 , 83, 128 byte 0 , 0 , 83, 64 byte 0 , 0 , 83, 32 byte 62, 80, 0 , 255 byte 0 , 0 , 0 , 128 byte 55, 80, 0 , 255 byte 0 , 0 , 0 , 128 byte 50, 60, 81, 255 byte 0 , 60, 81, 128 byte 50, 0 , 81, 255 byte 0 , 0 , 81, 128 byte 50, 0 , 81, 255 byte 0 , 0 , 81, 128 byte 0 , 0 , 81, 64 byte 0 , 0 , 81, 32 byte 62, 80, 81, 255 byte 0 , 0 , 0 , 128 byte 0 , 0 , 0 , 64 byte 0 , 0 , 0 , 32 byte 50, 0 , 79, 255 byte 50, 0 , 79, 128 byte 0 , 0 , 79, 64 byte 0 , 0 , 79, 32 byte 50, 60, 0 , 255 byte 0 , 60, 0 , 128 byte 0 , 0 , 0 , 64 byte 0 , 0 , 0 , 32 byte 62, 60, 77, 255 byte 0 , 60, 77, 128 byte 0 , 0 , 77, 64 byte 0 , 0 , 77, 32 byte 50, 80, 0 , 255 byte 50, 0 , 0 , 128 byte 0 , 0 , 0 , 64 byte 0 , 0 , 0 , 32 byte 62, 0 , 84, 255 byte 0 , 0 , 84, 128 byte 62, 0 , 0 , 255 byte 0 , 0 , 0 , 128 byte 60, 60, 86, 255 byte 60, 60, 86, 128 byte 60, 0 , 86, 64 byte 0 , 0 , 86, 32 byte 60, 60, 86, 255 byte 0 , 60, 86, 128 byte 0 , 0 , 0 , 64 byte 0 , 0 , 0 , 32 byte 67, 80, 86, 128 byte 0 , 0 , 86, 64 byte 0 , 0 , 0 , 32 byte 0 , 0 , 0 , 16 byte 60, 0 , 0 , 255 byte 60, 0 , 0 , 128 byte 0 , 0 , 0 , 64 byte 0 , 0 , 0 , 32 byte 55, 60, 89, 255 byte 0 , 60, 89, 128 byte 0 , 0 , 89, 64 byte 0 , 0 , 89, 32 byte 67, 0 , 0 , 255 byte 0 , 0 , 0 , 128 byte 0 , 0 , 0 , 64 byte 0 , 0 , 0 , 32 byte 55, 80, 88, 255 byte 55, 0 , 88, 128 byte 0 , 60, 88, 64 byte 0 , 0 , 88, 32 byte 67, 80, 88, 255 byte 0 , 0 , 88, 128 byte 67, 80, 88, 255 byte 0 , 0 , 88, 128 '------------------------------------------ byte 50, 60, 88, 128 byte 50, 60, 88, 64 byte 50, 0 , 0 , 32 byte 0 , 0 , 0 , 16 byte 50, 0 , 81, 128 byte 0 , 0 , 81, 64 byte 0 , 0 , 81, 32 byte 0 , 0 , 81, 16 byte 62, 80, 90, 128 byte 0 , 0 , 89, 64 byte 0 , 0 , 0 , 32 byte 0 , 0 , 0 , 16 byte 50, 0 , 81, 128 byte 50, 0 , 81, 64 byte 0 , 0 , 0 , 32 byte 0 , 0 , 0 , 16 byte 50, 60, 89, 128 byte 0 , 60, 88, 64 byte 0 , 0 , 0 , 32 byte 0 , 0 , 0 , 16 byte 62, 60, 89, 128 byte 0 , 60, 89, 64 byte 0 , 0 , 0 , 32 byte 0 , 0 , 0 , 16 byte 50, 80, 81, 128 byte 50, 0 , 81, 64 byte 0 , 0 , 81, 32 byte 0 , 0 , 81, 16 byte 62, 0 , 81, 128 byte 0 , 0 , 81, 64 byte 62, 0 , 0 , 32 byte 0 , 0 , 0 , 16 byte 55, 60, 84, 128 byte 55, 60, 84, 64 byte 55, 0 , 84, 32 byte 0 , 0 , 84, 16 byte 55, 0 , 84, 128 byte 0 , 0 , 84, 64 byte 0 , 0 , 84, 32 byte 0 , 0 , 84, 16 byte 65, 80, 84, 128 byte 0 , 0 , 0 , 64 byte 0 , 0 , 0 , 32 byte 0 , 0 , 0 , 16 byte 55, 0 , 0 , 128 byte 55, 0 , 0 , 64 byte 0 , 0 , 0 , 32 byte 0 , 0 , 0 , 16 byte 55, 60, 83, 128 byte 0 , 60, 83, 64 byte 0 , 0 , 0 , 32 byte 0 , 0 , 0 , 16 byte 65, 60, 0 , 128 byte 0 , 60, 0 , 64 byte 0 , 0 , 0 , 32 byte 0 , 0 , 0 , 16 byte 55, 80, 79, 128 byte 55, 0 , 79, 64 byte 0 , 0 , 0 , 32 byte 0 , 0 , 0 , 16 byte 62, 80, 0 , 128 byte 0 , 0 , 0 , 64 byte 55, 80, 0 , 128 byte 0 , 0 , 0 , 64 byte 50, 60, 86, 255 byte 0 , 60, 86, 64 ' byte 50, 0 , 86, 255 byte 0 , 0 , 86, 64 byte 50, 0 , 86, 255 byte 0 , 0 , 86, 128 byte 0 , 0 , 86, 64 byte 0 , 0 , 86, 32 byte 62, 80, 86, 16 byte 0 , 0 , 86, 8 byte 0 , 0 , 86, 4 byte 0 , 0 , 86, 2 byte 50, 0 , 0 , 2 byte 50, 0 , 0 , 4 byte 0 , 0 , 0 , 16 byte 0 , 0 , 0 , 32 byte 50, 60, 0 , 64 byte 0 , 60, 0 , 128 byte 0 , 0 , 0 , 192 byte 0 , 0 , 0 , 255 byte 62, 60, 82, 255 byte 0 , 60, 81, 192 byte 0 , 0 , 81, 150 byte 0 , 0 , 81, 120 byte 50, 80, 0 , 100 byte 50, 0 , 0 , 80 byte 0 , 0 , 80, 100 byte 0 , 0 , 79, 120 byte 62, 0 , 79, 150 byte 0 , 0 , 79, 192 byte 62, 0 , 0 , 230 byte 0 , 0 , 0 , 255 byte 60, 60, 82, 255 byte 60, 60, 81, 248 byte 60, 0 , 81, 240 byte 0 , 0 , 81, 232 byte 60, 60, 81, 224 byte 0 , 60, 0 , 216 byte 0 , 0 , 0 , 208 byte 0 , 0 , 0 , 200 byte 67, 80, 84, 192 byte 0 , 0 , 84, 184 byte 0 , 0 , 0 , 176 byte 0 , 0 , 0 , 168 byte 60, 0 , 80, 160 byte 60, 0 , 79, 152 byte 0 , 0 , 79, 144 byte 0 , 0 , 79, 136 byte 55, 60, 0 , 128 byte 0 , 60, 0 , 120 byte 0 , 0 , 0 , 112 byte 0 , 0 , 0 , 104 byte 67, 0 , 79, 96 byte 0 , 0 , 79, 88 byte 0 , 0 , 0 , 80 byte 0 , 0 , 0 , 72 byte 55, 80, 77, 64 byte 55, 0 , 77, 56 byte 0 , 60, 0 , 48 byte 0 , 0 , 0 , 40 byte 67, 80, 72, 32 byte 0 , 0 , 72, 24 byte 67, 80, 72, 16 byte 0 , 0 , 72, 8 byte 255' Song end DAT {{ ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ TERMS OF USE: MIT License │ ├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation │ │files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, │ │modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software│ │is furnished to do so, subject to the following conditions: │ │ │ │The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.│ │ │ │THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE │ │WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR │ │COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, │ │ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. │ └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ }}