gpasm-0.11.8 alpha synth.asm 10-3-2003 15:21:14 PAGE 1 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00001 ;------------------------------------------------------------- 00002 ; One bit pic drumsynth - (c) copyleft nebogeo noise research 00003 ;------------------------------------------------------------- 00004 00005 Processor 16F84 00006 include "/usr/local/share/gputils/header/p16f84.inc" 00001 LIST 00002 ; P16F84.INC Standard Header File, Version 2.00 Microchip Technology, Inc. 00136 LIST 00007 00008 #define RANDOM 0c 00009 #define SYNTHSTATE 0d 00010 ; 0 output 00011 ; 1 playing bit 00012 ; 2 osc state 00013 00014 #define INSTRUMENT 0e 00015 #define OSCFREQ 0f 00016 #define OSCPULSETIME 10 00017 #define TEMPVAR 11 00018 00019 #define OHIHAT 00 00020 #define CHIHAT 01 00021 #define KICK 02 00022 #define SNARE 03 00023 00024 ;-------------------------------------------------------- 00025 0000 00026 start 0000 1683 00027 bsf STATUS, RP0 0001 3001 00028 movlw D'1' Message [302] : Register in operand not in bank 0. Ensure bank bits are correct. 0002 0085 00029 movwf TRISA ;set port a bits as inputs 0003 3000 00030 movlw D'0' Message [302] : Register in operand not in bank 0. Ensure bank bits are correct. 0004 0086 00031 movwf TRISB ;set port b bits as outputs 0005 1283 00032 bcf STATUS, RP0 00033 0006 3003 00034 movlw 3 0007 008F 00035 movwf OSCFREQ ; set initial frequency 0008 0090 00036 movwf OSCPULSETIME ; setup osc time 0009 3002 00037 movlw B'00000010' 000A 008D 00038 movwf SYNTHSTATE ; initialise state (as playing) 000B 00039 loop 000B 0064 00040 clrwdt ; clear watchdog timer 000C 1C8D 00041 btfss SYNTHSTATE,1 ; if we are playing 000D 280B 00042 goto loop 000E 2015 00043 call osc 00044 000F 1C0D 00045 btfss SYNTHSTATE,0 ; drive the output 0010 2813 00046 goto outputset 0011 1006 00047 bcf PORTB,0 0012 280B 00048 goto loop 0013 00049 outputset gpasm-0.11.8 alpha synth.asm 10-3-2003 15:21:14 PAGE 2 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0013 1406 00050 bsf PORTB,0 0014 280B 00051 goto loop 00052 00053 ;-------------------------------------------------------- 00054 0015 00055 hihat 00056 00057 ;--------------------------------------------------------- 00058 0015 00059 kick 00060 00061 ;-------------------------------------------------------- 00062 0015 00063 osc Message [305] : Using default destination of 1 (file). 0015 0390 00064 decf OSCPULSETIME 0016 0810 00065 movf OSCPULSETIME,W 0017 1903 00066 btfsc STATUS,2 ; is it time to flip? (time zero) 0018 201A 00067 call flip ; yes 0019 3400 00068 retlw 0 001A 00069 flip 001A 1C0D 00070 btfss SYNTHSTATE,0 ; flip output bit 001B 2820 00071 goto flipset 001C 100D 00072 bcf SYNTHSTATE,0 001D 00073 flipend 001D 080F 00074 movf OSCFREQ,W ; reset time 001E 0090 00075 movwf OSCPULSETIME 001F 3400 00076 retlw 0 0020 00077 flipset 0020 140D 00078 bsf SYNTHSTATE,0 0021 281D 00079 goto flipend 00080 00081 ;--------------------------------------------------------- 00082 0022 00083 noise 0022 2027 00084 call rnd 0023 300C 00085 movlw RANDOM 0024 008F 00086 movwf OSCFREQ ; use a random frequency on the osc 0025 2015 00087 call osc 0026 3400 00088 retlw 0 00089 00090 ;--------------------------------------------------------- 00091 0027 00092 rnd 0027 301D 00093 movlw 01DH 0028 1003 00094 clrc Message [305] : Using default destination of 1 (file). 0029 0D8C 00095 rlf RANDOM 002A 1803 00096 skpnc Message [305] : Using default destination of 1 (file). 002B 068C 00097 xorwf RANDOM 002C 3400 00098 retlw 0 00099 gpasm-0.11.8 alpha synth.asm 10-3-2003 15:21:14 PAGE 3 SYMBOL TABLE LABEL VALUE C 00000000 DC 00000001 EEADR 00000009 EECON1 00000088 EECON2 00000089 EEDATA 00000008 EEIE 00000006 EEIF 00000004 F 00000001 FSR 00000004 GIE 00000007 INDF 00000000 INTCON 0000000B INTE 00000004 INTEDG 00000006 INTF 00000001 IRP 00000007 NOT_PD 00000003 NOT_RBPU 00000007 NOT_TO 00000004 OPTION_REG 00000081 PCL 00000002 PCLATH 0000000A PORTA 00000005 PORTB 00000006 PS0 00000000 PS1 00000001 PS2 00000002 PSA 00000003 RBIE 00000003 RBIF 00000000 RD 00000000 RP0 00000005 RP1 00000006 STATUS 00000003 T0CS 00000005 T0IE 00000005 T0IF 00000002 T0SE 00000004 TMR0 00000001 TRISA 00000085 TRISB 00000086 W 00000000 WR 00000001 WREN 00000002 WRERR 00000003 Z 00000002 _CP_OFF 00003FFF _CP_ON 0000000F _HS_OSC 00003FFE _LP_OSC 00003FFC _PWRTE_OFF 00003FFF _PWRTE_ON 00003FF7 gpasm-0.11.8 alpha synth.asm 10-3-2003 15:21:14 PAGE 4 LOC OBJECT CODE LINE SOURCE TEXT VALUE _RC_OSC 00003FFF _WDT_OFF 00003FFB _WDT_ON 00003FFF _XT_OSC 00003FFD __16F84 00000001 flip 0000001A flipend 0000001D flipset 00000020 hihat 00000015 kick 00000015 loop 0000000B noise 00000022 osc 00000015 outputset 00000013 rnd 00000027 start 00000000 CHIHAT 01 INSTRUMENT 0e KICK 02 OHIHAT 00 OSCFREQ 0f OSCPULSETIME 10 RANDOM 0c SNARE 03 SYNTHSTATE 0d TEMPVAR 11 MEMORY USAGE MAP ('X' = Used, '-' = Unused) 0000 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXX--- ---------------- All other memory blocks unused. Program Memory Words Used: 45 Errors : 0 Warnings : 0 reported, 0 suppressed Messages : 5 reported, 0 suppressed