Freeware assember ASxx.EXE Ver 1.03. 0001 *THESE EQUATES DEFINE VARIOUS CONTROL REGISTERS 0002 0003 *INTERRUPT/RESET VECTORS 0004 1ffe RESVEC EQU $1FFE HARD RESET VECTOR 0005 1ff6 SCIVEC EQU $1FF6 SCI SERIAL PORT INTERRUPT VECTOR 0006 1ff8 TIMVEC EQU $1FF8 TIMER INTERRUPT VECTOR 0007 0008 *MEMORY CONFIGURATION 0009 1fdf OPTREG EQU $1FDF OPTION REGISTER TO SET MEMORY CONFIGURATION 0010 0011 *I/O PORTS 0012 0000 PORTA EQU $00 PORT A DATA REGISTER 0013 0001 PORTB EQU $01 PORT B DATA REGISTER 0014 0002 PORTC EQU $02 PORT C DATA REGISTER 0015 0003 PORTD EQU $03 PORT D FIXED INPUT REGISTER 0016 0004 DDRA EQU $04 PORT A DATA DIRECTION REGISTER 0017 0005 DDRB EQU $05 PORT B DATA DIRECTION REGISTER 0018 0006 DDRC EQU $06 PORT C DATA DIRECTION REGISTER 0019 0020 *SCI SERIAL PORT 0021 000d BAUDRG EQU $0D SCI BAUD RATE REGISTER 0022 000e SCICT1 EQU $0E SCI CONTROL REGISTER 1 0023 000f SCICT2 EQU $0F SCI CONTROL REGISTER 2 0024 0010 SCISTA EQU $10 SCI COMMUNICATIONS STATUS REGISTER 0025 0011 SCIDAT EQU $11 SCI COMMUNICATIONS DATA REGISTER 0026 0027 *TIMER 0028 *WITH A 4 MHz CLOCK, EACH FREE RUNNING TIMER COUNTER DECREMENT TAKES 0029 *2 MICROSECONDS (BEST RESOLUTION) 0030 0019 TIMCNT EQU $19 TIMER COUNTER REGISTER, READ ONLY (LOW BYTE) 0031 001a ACHR EQU $1A ALTERNATE COUNTER HIGH REGISTER 0032 001b ACLR EQU $1B ALTERNATE COUNTER LOW REGISTER 0033 0016 OCHR EQU $16 OUTPUT COMPARE HIGH REGISTER 0034 0017 OCLR EQU $17 OUTPUT COMPARE LOW REGISTER 0035 0013 TSR EQU $13 TIMER STATUS REGISTER 0036 0012 TCR EQU $12 TIMER CONTROL REGISTER 0037 0038 0025 SAMCNT EQU $25 NUMBER OF TIMER COUNTS BETWEEN INTERRUPTS FOR 12 KHZ 0039 0040 0020 SEIZE EQU $20 PRESS VALUE FOR BUTTON 2600 0041 0040 KEYP EQU $40 PRESS VALUE FOR BUTTON KEY PULSE 1 0042 0080 STRT EQU $80 PRESS VALUE FOR BUTTON START 0043 0001 MF1 EQU $01 PRESS VALUE FOR BUTTON 1 0044 0002 MF2 EQU $02 PRESS VALUE FOR BUTTON 2 0045 0004 MF3 EQU $04 PRESS VALUE FOR BUTTON 3 0046 0047 0002 MF4 EQU $02 PRESS VALUE FOR BUTTON 4 0048 0004 MF5 EQU $04 PRESS VALUE FOR BUTTON 5 0049 0008 MF6 EQU $08 PRESS VALUE FOR BUTTON 6 0050 0010 MF7 EQU $10 PRESS VALUE FOR BUTTON 7 0051 0020 MF8 EQU $20 PRESS VALUE FOR BUTTON 8 0052 0040 MF9 EQU $40 PRESS VALUE FOR BUTTON 9 0053 0080 MF0 EQU $80 PRESS VALUE FOR BUTTON 0 0054 0055 0003 DIAL EQU $03 PRESS VALUE FOR DIAL TONE 0056 0006 RING EQU $06 PRESS VALUE FOR RINGBACK 0057 0006 BUSY EQU $06 PRESS VALUE FOR BUSY 0058 000c REORD EQU $0C PRESS VALUE FOR REORDER 0059 00a0 DTMF EQU $A0 PRESS VALUE TO TOGGLE DTMF MODE 0060 0005 AA EQU $05 PRESS VALUE FOR DTMF A 0061 00c0 DD EQU $C0 PRESS VALUE FOR DTMF D 0062 000a BB EQU $0A PRESS VALUE FOR DTMF B 0063 0050 CC EQU $50 PRESS VALUE FOR DTMF C 0064 0030 BRST EQU $30 PRESS VALUE TO TOGGLE MF BURST MODE 0065 0060 CAL EQU $60 PRESS VALUE TO TOGGLE CALIBRATION MODE 0066 0012 SITIN EQU $12 PRESS VALUE FOR INTERCEPT SIT TONE 0067 0024 SITNC EQU $24 PRESS VALUE FOR NO CIRCUIT SIT TONE 0068 0048 SITRO EQU $48 PRESS VALUE FOR REORDER SIT TONE 0069 0070 *RAM STORAGE 0071 0030 PTR1LO EQU $30 POINTER INTO SINE TABLE FOR TONE 1 0072 0031 PTR1HI EQU $31 0073 0032 PTR2LO EQU $32 POINTER INTO SINE TABLE FOR TONE 2 0074 0033 PTR2HI EQU $33 0075 0034 INC1LO EQU $34 INCREMENT INTO SINE TABLE FOR TONE 1 0076 0035 INC1HI EQU $35 0077 0036 INC2LO EQU $36 INCREMENT INTO SINE TABLE FOR TONE 2 0078 0037 INC2HI EQU $37 0079 0038 SAMPLO EQU $38 12KHZ SAMPLE CYCLE COUNTER 0080 0039 SAMPHI EQU $39 0081 0040 TIMLO EQU $40 STORAGE FOR LOW TIMER COUNT 0082 0041 TIMHI EQU $41 STORAGE FOR HIGH TIMER COUNT 0083 0042 BURCNT EQU $42 BURST COUNTER 0084 0043 CTLO EQU $43 HIGH BYTE OF SAMPLE COUNT 0085 0044 CTHI EQU $44 LOW BYTE OF SAMPLE COUNT 0086 0045 TEMP EQU $45 TEMPORARY BYTE STORAGE FOR TIMER SERVICING 0087 0046 PRESS EQU $46 STORAGE FOR LAST KEY PRESS 0088 0047 MODE EQU $47 STORAGE FOR MF/DTMF MODE FLAG 0089 0048 BSTFLG EQU $48 STORAGE FOR MF BURST MODE FLAG 0090 0049 TEMP1 EQU $49 TEMPORARY STORAGE FOR DEBOUNCE DELAY 0091 0050 PWRTIM EQU $50 COUNTER FOR POWER OFF TIMER 0092 0051 CALFLG EQU $51 STORAGE FOR CALIBRATION MODE FLAG 0093 0094 ******************************************************************************* 0095 0096 * INITIALIZATION 0097 1ff4 ORG $1FF4 BEGINNING OF INTERRUPT VECTORS 0098 0099 1ff4 01 60 FDB START SPI VECTOR POINTS TO INIT 0100 1ff6 01 60 FDB START SCI VECTOR POINTS TO INIT 0101 1ff8 04 32 FDB TIMISR TIMER VECTOR POINTS TO TIMER ISR 0102 1ffa 04 b0 FDB SWITCH IRQ LINE VECTOR POINTS TO ISR 0103 1ffc 01 60 FDB START SWI VECTOR POINTS TO INIT 0104 1ffe 01 60 FDB START RESET VECTOR POINTS TO INIT 0105 0106 0160 ORG $0160 BEGINNING OF USER EPROM, MEMORY MAP 4 0107 0108 0160 START EQU * 0109 0160 9b SEI DISABLE INTERRUPTS 0110 0161 a6 c0 LDA #$C0 SET FOR MEMORY MAP 4, EDGE IRQ DETECT 0111 0163 c7 1f df STA OPTREG 0112 0166 a6 10 LDA #$10 SET PORTA FOR SWITCHES AND AMPLIFIER SWITCH 0113 0168 b7 04 STA DDRA 0114 016a 16 00 BSET 3,PORTA PRESET LATCH FOR PULL-UP V SOURCE 0115 016c a6 ff LDA #$FF INITIALIZE PORT B FOR D/A 0116 016e b7 05 STA DDRB 0117 0170 3f 01 CLR PORTB INITIALIZE D/A FOR NO OUTPUT 0118 0172 a6 01 LDA #$01 INITIALIZE SECOND SWITCH PORT FOR 7 INPUTS 0119 0174 b7 06 STA DDRC SET 2ND SWITCH PORT FOR 7 INPUTS 0120 0176 3f 47 CLR MODE INITIALIZE TO MF MODE 0121 0178 3f 48 CLR BSTFLG INITIALIZE TO MF BURST MODE 0122 017a 3f 51 CLR CALFLG INITIALIZE CALIBRATION MODE OFF 0123 017c 9a INIT CLI ENABLE INTERRUPTS 0124 0125 017d MAIN EQU * 0126 0127 * WAIT FOR KEY RELEASE 0128 017d 16 04 BSET 3,DDRA TURN ON PULL-UP VOLTAGE 0129 017f 16 00 BSET 3,PORTA 0130 0181 a6 ff LDA #$FF WAIT FOR VOLTAGE TO STABILIZE 0131 0183 4a AGAIN DECA 0132 0184 26 fd BNE AGAIN 0133 0186 b6 00 NONE LDA PORTA GET INPUTS FROM SWITCH PORT 0134 0188 43 COMA TAKE THE COMPLEMENT FOR EASIER PROCESSING 0135 0189 a4 e7 AND #$E7 MASK ALL BUT THE SWITCH INPUTS 0136 018b 26 f9 BNE NONE STILL PRESSED, WAIT 0137 018d b6 02 NONE2 LDA PORTC GET INPUTS FROM SECOND SWITCH PORT 0138 018f 43 COMA TAKE THE COMPLEMENT FOR EASIER PROCESSING 0139 0190 a4 fe AND #$FE MASK ALL BUT THE SWITCH INPUTS 0140 0192 26 f9 BNE NONE2 STILL PRESSED, WAIT 0141 0194 17 04 BCLR 3,DDRA IF RELEASED, SHUT OFF PULL-UP VOLTAGE 0142 0143 * 33 SECOND POWER DOWN TIMER ROUTINE 0144 0196 a6 ff LDA #$FF SET UP OVERFLOW EVENT COUNTER 0145 0198 b7 50 STA PWRTIM SAVE IT 0146 019a b6 13 PWRDWN LDA TSR CLEAR TIMER OVERFLOW FLAG 0147 019c b6 19 LDA TIMCNT 0148 019e 2e 0e HOLD BIL PWRUP IF IRQ LOW, CONTINUE 0149 01a0 0b 13 fb BRCLR 5,TSR,HOLD LOOP UNTIL OVERFLOW SET 0150 01a3 3a 50 DEC PWRTIM DECREMENT POWER OFF TIMER 0151 01a5 26 f3 BNE PWRDWN DO AGAIN, IF NOT 33 SECONDS 0152 0153 0154 01a7 3f 01 CLR PORTB SET D/A PORT FOR NO OUTPUT 0155 01a9 18 00 BSET 4,PORTA TURN OFF AMPLIFIER 0156 01ab 3f 51 CLR CALFLG TURN CALIBRATION MODE OFF 0157 01ad 8e STOP ENTER LOW POWER MODE AND WAIT FOR IRQ 0158 0159 01ae 9b PWRUP SEI DISABLE INTERRUPTS 0160 01af 19 00 BCLR 4,PORTA TURN ON AMPLIFIER 0161 01b1 16 04 BSET 3,DDRA TURN ON PULL-UP VOLTAGE 0162 01b3 16 00 BSET 3,PORTA 0163 01b5 a6 ff LDA #$FF WAIT FOR VOLTAGE TO STABILIZE 0164 01b7 4a AGAIN1 DECA 0165 01b8 26 fd BNE AGAIN1 0166 0167 * GET AND DEBOUNCE SWITCH INPUTS 0168 01ba b6 00 DBNCE LDA PORTA GET INPUTS FROM SWITCH PORT 0169 01bc 43 COMA TAKE THE COMPLEMENT FOR EASIER PROCESSING 0170 01bd a4 e7 AND #$E7 MASK ALL BUT THE SWITCH INPUTS 0171 01bf 27 13 BEQ DBNCE2 NO PRESS, CHECK NEXT SWITCH PORT 0172 01c1 b7 46 STA PRESS OTHERWISE, STORE VALUE IN REGISTER 0173 01c3 cd 04 b1 JSR WAIT WAIT FOR DEBOUNCE TIME 0174 01c6 b6 00 LDA PORTA GET SWITCH VALUE AGAIN 0175 01c8 43 COMA TAKE THE COMPLEMENT FOR EASIER PROCESSING 0176 01c9 a4 e7 AND #$E7 MASK ALL BUT THE SWITCH INPUTS 0177 01cb b1 46 CMP PRESS SEE IF VALUE IS THE SAME AFTER DEBOUNCE 0178 01cd 26 eb BNE DBNCE IF NOT, TRY AGAIN UNTIL NONE PRESSED 0179 01cf 17 04 BCLR 3,DDRA IF GOOD PRESS, SHUT OFF PULL-UP VOLTAGE 0180 01d1 9a CLI RE-ENABLE INTERRUPTS 0181 01d2 20 1b BRA DECODE GO TO KEY DECODE 0182 0183 01d4 b6 02 DBNCE2 LDA PORTC GET INPUTS FROM SWITCH PORT 0184 01d6 43 COMA TAKE THE COMPLEMENT FOR EASIER PROCESSING 0185 01d7 a4 fe AND #$FE MASK ALL BUT THE SWITCH INPUTS 0186 01d9 27 a2 BEQ MAIN NO PRESS, START OVER 0187 01db b7 46 STA PRESS OTHERWISE, STORE VALUE IN REGISTER 0188 01dd cd 04 b1 JSR WAIT WAIT FOR DEBOUNCE TIME 0189 01e0 b6 02 LDA PORTC GET SWITCH VALUE AGAIN 0190 01e2 43 COMA TAKE THE COMPLEMENT FOR EASIER PROCESSING 0191 01e3 a4 fe AND #$FE MASK ALL BUT THE SWITCH INPUTS 0192 01e5 b1 46 CMP PRESS SEE IF VALUE IS THE SAME AFTER DEBOUNCE 0193 01e7 26 eb BNE DBNCE2 IF NOT, TRY AGAIN UNTIL NONE PRESSED 0194 01e9 17 04 BCLR 3,DDRA IF GOOD PRESS, SHUT OFF PULL-UP VOLTAGE 0195 01eb 9a CLI RE-ENABLE INTERRUPTS 0196 01ec cc 02 cd JMP NEXT10 JUMP TO KEY DECODE FOR PORTC 0197 0198 * DECODE BUTTON 2600 0199 01ef a1 20 DECODE CMP #SEIZE SEE IF THE 2600 BUTTON IS PRESSED 0200 01f1 26 13 BNE NEXT01 IF NOT, TRY THE NEXT 0201 01f3 b6 51 LDA CALFLG GET CALIBRATION FLAG 0202 01f5 27 05 BEQ NCAL08 CONTINUE IF NOT CAL MODE 0203 01f7 cd 08 c7 JSR NICK PLAY NICKEL TONE 0204 01fa 20 07 BRA SKIP01 0205 01fc b6 47 NCAL08 LDA MODE GET MF/DTMF MODE 0206 01fe 26 03 BNE SKIP01 DO NOTHING IF IN DTMF MODE 0207 0200 cd 06 15 JSR BEEP PLAY 2600 0208 0203 cc 01 7d SKIP01 JMP MAIN POWER DOWN AND WAIT FOR NEXT 0209 0210 * DECODE BUTTON KEY PULSE 1 0211 0206 a1 40 NEXT01 CMP #KEYP SEE IF THE TWO BUTTON IS PRESSED 0212 0208 26 18 BNE NEXT02 IF NOT, TRY THE NEXT 0213 020a b6 51 LDA CALFLG GET CALIBRATION FLAG 0214 020c 27 05 BEQ NCAL09 CONTINUE IF NOT CAL MODE 0215 020e cd 08 e3 JSR DIME PLAY DIME TONE 0216 0211 20 0c BRA SKIP03 0217 0213 b6 47 NCAL09 LDA MODE CHECK MF/DTMF MODE 0218 0215 27 05 BEQ SKIP02 0219 0217 cd 07 9d JSR STAR PLAY DTMF * if DTMF MODE 0220 021a 20 03 BRA SKIP03 BRANCH AROUND MF IF DTMF MODE 0221 021c cd 05 c9 SKIP02 JSR KP1 PLAY MF KP1 0222 021f cc 01 7d SKIP03 JMP MAIN POWER DOWN AND WAIT FOR NEXT 0223 0224 * DECODE BUTTON START 0225 0222 a1 80 NEXT02 CMP #STRT SEE IF THE START BUTTON IS PRESSED 0226 0224 26 18 BNE NEXT03 IF NOT, TRY THE NEXT 0227 0226 b6 51 LDA CALFLG GET CALIBRATION FLAG 0228 0228 27 05 BEQ NCAL10 CONTINUE IF NOT CAL MODE 0229 022a cd 09 07 JSR QUART PLAY QUARTER TONE 0230 022d 20 0c BRA SKIP05 0231 022f b6 47 NCAL10 LDA MODE CHECK MF/DTMF MODE 0232 0231 27 05 BEQ SKIP04 0233 0233 cd 07 c5 JSR POUND PLAY DTMF # if DTMF MODE 0234 0236 20 03 BRA SKIP05 BRANCH AROUND MF IF DTMF MODE 0235 0238 cd 06 01 SKIP04 JSR ST PLAY MF ST 0236 023b cc 01 7d SKIP05 JMP MAIN POWER DOWN AND WAIT FOR NEXT 0237 0238 * DECODE BUTTON MF1 0239 023e a1 01 NEXT03 CMP #MF1 SEE IF THE PORTA 0 BUTTON IS PRESSED 0240 0240 26 18 BNE NEXT04 IF NOT, TRY THE NEXT 0241 0242 b6 51 LDA CALFLG GET CALIBRATION FLAG 0242 0244 27 05 BEQ NCAL01 CONTINUE IF NOT CAL MODE 0243 0246 cd 08 3b JSR T0700 PLAY 700 CAL TONE 0244 0249 20 0c BRA SKIP07 0245 024b b6 47 NCAL01 LDA MODE CHECK MF/DTMF MODE 0246 024d 27 05 BEQ SKIP06 0247 024f cd 06 ad JSR DIONE PLAY DTMF 1 if DTMF MODE 0248 0252 20 03 BRA SKIP07 BRANCH AROUND MF IF DTMF MODE 0249 0254 cd 05 15 SKIP06 JSR MFONE PLAY MF ONE 0250 0257 cc 01 7d SKIP07 JMP MAIN POWER DOWN AND WAIT FOR NEXT 0251 0252 * DECODE BUTTON MF2 0253 025a a1 02 NEXT04 CMP #MF2 SEE IF THE PORT A 1 BUTTON IS PRESSED 0254 025c 26 18 BNE NEXT05 IF NOT, TRY THE NEXT 0255 025e b6 51 LDA CALFLG GET CALIBRATION FLAG 0256 0260 27 05 BEQ NCAL02 CONTINUE IF NOT CAL MODE 0257 0262 cd 08 4f JSR T0900 PLAY 900 CAL TONE 0258 0265 20 0c BRA SKIP09 0259 0267 b6 47 NCAL02 LDA MODE CHECK MF/DTMF MODE 0260 0269 27 05 BEQ SKIP08 0261 026b cd 06 c1 JSR DITWO PLAY DTMF 2 if DTMF MODE 0262 026e 20 03 BRA SKIP09 BRANCH AROUND MF IF DTMF MODE 0263 0270 cd 05 29 SKIP08 JSR MFTWO PLAY MF TWO 0264 0273 cc 01 7d SKIP09 JMP MAIN POWER DOWN AND WAIT FOR NEXT 0265 0266 * DECODE BUTTON MF3 0267 0276 a1 04 NEXT05 CMP #MF3 SEE IF THE PORT A 2 BUTTON IS PRESSED 0268 0278 26 18 BNE NEXT06 IF NOT, TRY THE NEXT 0269 027a b6 51 LDA CALFLG GET CALIBRATION FLAG 0270 027c 27 05 BEQ NCAL03 CONTINUE IF NOT CAL MODE 0271 027e cd 08 63 JSR T1100 PLAY 1100 CAL TONE 0272 0281 20 0c BRA SKIP11 0273 0283 b6 47 NCAL03 LDA MODE CHECK MF/DTMF MODE 0274 0285 27 05 BEQ SKIP10 0275 0287 cd 06 d5 JSR DITHREE PLAY DTMF 3 if DTMF MODE 0276 028a 20 03 BRA SKIP11 BRANCH AROUND MF IF DTMF MODE 0277 028c cd 05 3d SKIP10 JSR MFTHREE PLAY MF THREE 0278 028f cc 01 7d SKIP11 JMP MAIN POWER DOWN AND WAIT FOR NEXT 0279 0280 * DECODE BUTTON DTMF A 0281 0292 a1 05 NEXT06 CMP #AA SEE IF THE PORT A 1 AND 3 BUTTON IS PRESSED 0282 0294 26 0e BNE NEXT07 IF NOT, TRY THE NEXT 0283 0296 b6 51 LDA CALFLG GET CALIBRATION MODE FLAG 0284 0298 26 07 BNE SKIP12 DO NOTHING IF IN CALIBRATION MODE 0285 029a b6 47 LDA MODE CHECK MF/DTMF MODE 0286 029c 27 03 BEQ SKIP12 0287 029e cd 06 e9 JSR AAA PLAY DTMF A IF DTMF MODE 0288 02a1 cc 01 7d SKIP12 JMP MAIN POWER DOWN AND WAIT FOR NEXT 0289 0290 * DECODE BUTTON DTMF D 0291 02a4 a1 c0 NEXT07 CMP #DD SEE IF THE PORT A KP AND ST BUTTON IS PRESSED 0292 02a6 26 0e BNE NEXT08 IF NOT, TRY THE NEXT 0293 02a8 b6 51 LDA CALFLG GET CALIBRATION MODE FLAG 0294 02aa 26 07 BNE SKIP99 DO NOTHING IF IN CALIBRATION MODE 0295 02ac b6 47 LDA MODE CHECK MF/DTMF MODE 0296 02ae 27 03 BEQ SKIP99 0297 02b0 cd 07 d9 JSR DDD PLAY DTMF D if DTMF MODE 0298 02b3 cc 01 7d SKIP99 JMP MAIN POWER DOWN AND WAIT FOR NEXT 0299 0300 *DECODE BUTTON FOR DIALTONE 0301 02b6 a1 03 NEXT08 CMP #DIAL SEE IF THE PORT A 1 AND 2 BUTTON IS PRESSED 0302 02b8 26 06 BNE NEXT09 IF NOT, TRY THE NEXT 0303 02ba cd 06 31 JSR DIALTN PLAY DIAL TONE 0304 02bd cc 01 7d JMP MAIN POWER DOWN AND WAIT FOR NEXT 0305 0306 *DECODE BUTTON FOR RINGBACK 0307 02c0 a1 06 NEXT09 CMP #RING SEE IF THE PORT A 2 BUTTON IS PRESSED 0308 02c2 26 06 BNE NEXT99 IF NOT, TRY THE NEXT 0309 02c4 cd 06 45 JSR RINGBK PLAY RINGBACK 0310 02c7 cc 01 7d JMP MAIN POWER DOWN AND WAIT FOR NEXT 0311 0312 02ca cc 01 7d NEXT99 JMP MAIN INVALID KEY PRESS, POWER DOWN AND WAIT FOR NEXT 0313 0314 *END OF DECODE SCAN FOR PORTA 0315 0316 * DECODE BUTTON MF4 0317 02cd a1 02 NEXT10 CMP #MF4 SEE IF THE PORTC BIT1 BUTTON IS PRESSED 0318 02cf 26 18 BNE NEXT11 IF NOT, TRY THE NEXT 0319 02d1 b6 51 LDA CALFLG GET CALIBRATION FLAG 0320 02d3 27 05 BEQ NCAL04 CONTINUE IF NOT CAL MODE 0321 02d5 cd 08 77 JSR T1300 PLAY 1300 CAL TONE 0322 02d8 20 0c BRA SKIP14 0323 02da b6 47 NCAL04 LDA MODE CHECK MF/DTMF MODE 0324 02dc 27 05 BEQ SKIP13 0325 02de cd 06 fd JSR DIFOUR PLAY DTMF 4 if DTMF MODE 0326 02e1 20 03 BRA SKIP14 BRANCH AROUND MF IF DTMF MODE 0327 02e3 cd 05 51 SKIP13 JSR MFFOUR PLAY MF FOUR 0328 02e6 cc 01 7d SKIP14 JMP MAIN POWER DOWN AND WAIT FOR NEXT 0329 0330 * DECODE BUTTON MF5 0331 02e9 a1 04 NEXT11 CMP #MF5 SEE IF THE PORTC BIT2 BUTTON IS PRESSED 0332 02eb 26 18 BNE NEXT12 IF NOT, TRY THE NEXT 0333 02ed b6 51 LDA CALFLG GET CALIBRATION FLAG 0334 02ef 27 05 BEQ NCAL05 CONTINUE IF NOT CAL MODE 0335 02f1 cd 08 8b JSR T1500 PLAY 1500 CAL TONE 0336 02f4 20 0c BRA SKIP16 0337 02f6 b6 47 NCAL05 LDA MODE CHECK MF/DTMF MODE 0338 02f8 27 05 BEQ SKIP15 0339 02fa cd 07 11 JSR DIFIVE PLAY DTMF 5 if DTMF MODE 0340 02fd 20 03 BRA SKIP16 BRANCH AROUND MF IF DTMF MODE 0341 02ff cd 05 65 SKIP15 JSR MFFIVE PLAY MF FIVE 0342 0302 cc 01 7d SKIP16 JMP MAIN POWER DOWN AND WAIT FOR NEXT 0343 0344 * DECODE BUTTON MF6 0345 0305 a1 08 NEXT12 CMP #MF6 SEE IF THE PORTC BIT3 BUTTON IS PRESSED 0346 0307 26 18 BNE NEXT13 IF NOT, TRY THE NEXT 0347 0309 b6 51 LDA CALFLG GET CALIBRATION FLAG 0348 030b 27 05 BEQ NCAL06 CONTINUE IF NOT CAL MODE 0349 030d cd 08 9f JSR T1700 PLAY 1700 CAL TONE 0350 0310 20 0c BRA SKIP18 0351 0312 b6 47 NCAL06 LDA MODE CHECK MF/DTMF MODE 0352 0314 27 05 BEQ SKIP17 0353 0316 cd 07 25 JSR DISIX PLAY DTMF 6 if DTMF MODE 0354 0319 20 03 BRA SKIP18 BRANCH AROUND MF IF DTMF MODE 0355 031b cd 05 79 SKIP17 JSR MFSIX PLAY MF SIX 0356 031e cc 01 7d SKIP18 JMP MAIN POWER DOWN AND WAIT FOR NEXT 0357 0358 * DECODE BUTTON MF7 0359 0321 a1 10 NEXT13 CMP #MF7 SEE IF THE PORTC BIT4 BUTTON IS PRESSED 0360 0323 26 13 BNE NEXT14 IF NOT, TRY THE NEXT 0361 0325 b6 51 LDA CALFLG GET CALIBRATION MODE FLAG 0362 0327 26 0c BNE SKIP20 DO NOTHING IF IN CALIBRATION MODE 0363 0329 b6 47 LDA MODE CHECK MF/DTMF MODE 0364 032b 27 05 BEQ SKIP19 0365 032d cd 07 4d JSR DISEVEN PLAY DTMF 7 if DTMF MODE 0366 0330 20 03 BRA SKIP20 BRANCH AROUND MF IF DTMF MODE 0367 0332 cd 05 8d SKIP19 JSR MFSEVEN PLAY MF SEVEN 0368 0335 cc 01 7d SKIP20 JMP MAIN POWER DOWN AND WAIT FOR NEXT 0369 0370 * DECODE BUTTON MF8 0371 0338 a1 20 NEXT14 CMP #MF8 SEE IF THE PORTC BIT5 BUTTON IS PRESSED 0372 033a 26 13 BNE NEXT15 IF NOT, TRY THE NEXT 0373 033c b6 51 LDA CALFLG GET CALIBRATION MODE FLAG 0374 033e 26 0c BNE SKIP22 DO NOTHING IF IN CALIBRATION MODE 0375 0340 b6 47 LDA MODE CHECK MF/DTMF MODE 0376 0342 27 05 BEQ SKIP21 0377 0344 cd 07 61 JSR DIEIGHT PLAY DTMF 8 if DTMF MODE 0378 0347 20 03 BRA SKIP22 BRANCH AROUND MF IF DTMF MODE 0379 0349 cd 05 a1 SKIP21 JSR MFEIGHT PLAY MF EIGHT 0380 034c cc 01 7d SKIP22 JMP MAIN POWER DOWN AND WAIT FOR NEXT 0381 0382 * DECODE BUTTON MF9 0383 034f a1 40 NEXT15 CMP #MF9 SEE IF THE PORTC BIT6 BUTTON IS PRESSED 0384 0351 26 13 BNE NEXT16 IF NOT, TRY THE NEXT 0385 0353 b6 51 LDA CALFLG GET CALIBRATION MODE FLAG 0386 0355 26 0c BNE SKIP24 DO NOTHING IF IN CALIBRATION MODE 0387 0357 b6 47 LDA MODE CHECK MF/DTMF MODE 0388 0359 27 05 BEQ SKIP23 0389 035b cd 07 75 JSR DININE PLAY DTMF 9 if DTMF MODE 0390 035e 20 03 BRA SKIP24 BRANCH AROUND MF IF DTMF MODE 0391 0360 cd 05 b5 SKIP23 JSR MFNINE PLAY MF NINE 0392 0363 cc 01 7d SKIP24 JMP MAIN POWER DOWN AND WAIT FOR NEXT 0393 0394 * DECODE BUTTON MF0 0395 0366 a1 80 NEXT16 CMP #MF0 SEE IF THE PORTC BIT7 BUTTON IS PRESSED 0396 0368 26 18 BNE NEXT17 IF NOT, TRY THE NEXT 0397 036a b6 51 LDA CALFLG GET CALIBRATION FLAG 0398 036c 27 05 BEQ NCAL07 CONTINUE IF NOT CAL MODE 0399 036e cd 08 b3 JSR T1004 PLAY 1004 CAL TONE 0400 0371 20 0c BRA SKIP26 0401 0373 b6 47 NCAL07 LDA MODE CHECK MF/DTMF MODE 0402 0375 27 05 BEQ SKIP25 0403 0377 cd 07 b1 JSR DIZERO PLAY DTMF 0 if DTMF MODE 0404 037a 20 03 BRA SKIP26 BRANCH AROUND MF IF DTMF MODE 0405 037c cd 05 ed SKIP25 JSR MFZERO PLAY MF ZERO 0406 037f cc 01 7d SKIP26 JMP MAIN POWER DOWN AND WAIT FOR NEXT 0407 0408 * DECODE BUTTON BUSY 0409 0382 a1 06 NEXT17 CMP #BUSY SEE IF THE BUTTONS 4 AND 5 ARE PRESSED 0410 0384 26 06 BNE NEXT18 IF NOT, TRY THE NEXT 0411 0386 cd 06 71 JSR BUSYTN PLAY BUSY SIGNAL 0412 0389 cc 01 7d JMP MAIN POWER DOWN AND WAIT FOR NEXT 0413 0414 * DECODE BUTTON REORDER 0415 038c a1 0c NEXT18 CMP #REORD SEE IF THE BUTTONS 5 AND 6 ARE PRESSED 0416 038e 26 06 BNE NEXT19 IF NOT, TRY THE NEXT 0417 0390 cd 06 8f JSR REORDTN PLAY REORDER 0418 0393 cc 01 7d JMP MAIN POWER DOWN AND WAIT FOR NEXT 0419 0420 * DECODE BUTTON DTMF B 0421 0396 a1 0a NEXT19 CMP #BB SEE IF THE PORT A KP AND ST BUTTON IS PRESSED 0422 0398 26 0e BNE NEXT20 IF NOT, TRY THE NEXT 0423 039a b6 51 LDA CALFLG GET CALIBRATION MODE FLAG 0424 039c 26 07 BNE SKIP27 DO NOTHING IF IN CALIBRATION MODE 0425 039e b6 47 LDA MODE CHECK MF/DTMF MODE 0426 03a0 27 03 BEQ SKIP27 0427 03a2 cd 07 39 JSR BBB PLAY DTMF B if DTMF MODE 0428 03a5 cc 01 7d SKIP27 JMP MAIN POWER DOWN AND WAIT FOR NEXT 0429 0430 * DECODE BUTTON DTMF C 0431 03a8 a1 50 NEXT20 CMP #CC SEE IF THE PORT A KP AND ST BUTTON IS PRESSED 0432 03aa 26 0e BNE NEXT21 IF NOT, TRY THE NEXT 0433 03ac b6 51 LDA CALFLG GET CALIBRATION MODE FLAG 0434 03ae 26 07 BNE SKIP28 DO NOTHING IF IN CALIBRATION MODE 0435 03b0 b6 47 LDA MODE CHECK MF/DTMF MODE 0436 03b2 27 03 BEQ SKIP28 0437 03b4 cd 07 89 JSR CCC PLAY DTMF C if DTMF MODE 0438 03b7 cc 01 7d SKIP28 JMP MAIN POWER DOWN AND WAIT FOR NEXT 0439 0440 * DECODE BUTTON FOR MF/DTMF TOGGLE 0441 03ba a1 a0 NEXT21 CMP #DTMF SEE IF THE BUTTONS 5 AND 6 ARE PRESSED 0442 03bc 26 06 BNE NEXT22 IF NOT, TRY THE NEXT 0443 03be cd 04 bf JSR TOGGLE TOGGLE MF/DTMF MODE 0444 03c1 cc 01 7d JMP MAIN POWER DOWN AND WAIT FOR NEXT 0445 0446 * DECODE BUTTON FOR MF BURST MODE 0447 03c4 a1 30 NEXT22 CMP #BRST SEE IF THE BUTTONS 7 AND 8 ARE PRESSED 0448 03c6 26 06 BNE NEXT23 IF NOT, TRY THE NEXT 0449 03c8 cd 04 d1 JSR BURST TOGGLE MF BURST MODE 0450 03cb cc 01 7d JMP MAIN POWER DOWN AND WAIT FOR NEXT 0451 0452 * DECODE BUTTON FOR CALIBRATION MODE 0453 03ce a1 60 NEXT23 CMP #CAL SEE IF THE BUTTONS 8 AND 9 ARE PRESSED 0454 03d0 26 06 BNE NEXT24 IF NOT, TRY THE NEXT 0455 03d2 cd 04 e3 JSR CALIB TOGGLE CALIBRATION MODE 0456 03d5 cc 01 7d JMP MAIN POWER DOWN AND WAIT FOR NEXT 0457 0458 * DECODE BUTTON SIT1 0459 03d8 a1 12 NEXT24 CMP #SITIN SEE IF THE BUTTONS 4 AND 7 ARE PRESSED 0460 03da 26 06 BNE NEXT25 IF NOT, TRY THE NEXT 0461 03dc cd 09 2b JSR SIT1 PLAY SIT1 0462 03df cc 01 7d JMP MAIN POWER DOWN AND WAIT FOR NEXT 0463 0464 * DECODE BUTTON SIT2 0465 03e2 a1 24 NEXT25 CMP #SITNC SEE IF THE BUTTONS 5 AND 8 ARE PRESSED 0466 03e4 26 06 BNE NEXT26 IF NOT, TRY THE NEXT 0467 03e6 cd 09 7d JSR SIT2 PLAY SIT2 0468 03e9 cc 01 7d JMP MAIN POWER DOWN AND WAIT FOR NEXT 0469 0470 * DECODE BUTTON SIT3 0471 03ec a1 48 NEXT26 CMP #SITRO SEE IF THE BUTTONS 6 AND 9 ARE PRESSED 0472 03ee 26 06 BNE NEXT27 IF NOT, TRY THE NEXT 0473 03f0 cd 09 cf JSR SIT3 PLAY SIT3 0474 03f3 cc 01 7d JMP MAIN POWER DOWN AND WAIT FOR NEXT 0475 0476 03f6 cc 01 7d NEXT27 JMP MAIN INVALID KEY PRESS, POWER DOWN AND WAIT FOR NEXT 0477 0478 * SUBROUTINE TO PLAY A TONE OF SPECIFIED FREQUENCIES AND DURATION 0479 03f9 PLAY EQU * 0480 03f9 cd 04 9a JSR CLRTON CLEAR TONE COUNTERS 0481 03fc cd 04 84 JSR SETTIM SET UP TIMER FOR SAMPLING AT 12 KHZ 0482 03ff 1c 12 BSET 6,TCR ENABLE TIMER INTERRUPTS 0483 0401 cd 04 77 JSR CHKCNT SEE IF CORRECT NUMBER OF SAMPLES TIMED 0484 0404 1d 12 BCLR 6,TCR DISABLE INTERRUPTS WHEN COUNT COMPLETE 0485 0406 81 RTS 0486 0487 * SUBROUTINE TO PLAY A TONE OF SPECIFIED FREQUENCIES AND DURATION + SILENCE 0488 0407 PLAY2 EQU * 0489 0407 cd 04 9a JSR CLRTON CLEAR TONE COUNTERS 0490 040a cd 04 84 JSR SETTIM SET UP TIMER FOR SAMPLING AT 12 KHZ 0491 040d 1c 12 BSET 6,TCR ENABLE TIMER INTERRUPTS 0492 040f cd 04 77 JSR CHKCNT SEE IF CORRECT NUMBER OF SAMPLES TIMED 0493 0412 1d 12 BCLR 6,TCR DISABLE INTERRUPTS WHEN COUNT COMPLETE 0494 0495 0414 cd 04 9a JSR CLRTON CLEAR TONE COUNTERS 0496 0417 cd 04 a7 JSR NOTONE SET FOR SILENCE 0497 041a cd 04 84 JSR SETTIM SET UP TIMER FOR SAMPLING AT 12 KHZ 0498 041d 1c 12 BSET 6,TCR ENABLE TIMER INTERRUPTS 0499 041f cd 04 77 JSR CHKCNT SEE IF CORRECT NUMBER OF SAMPLES TIMED 0500 0422 1d 12 BCLR 6,TCR DISABLE INTERRUPTS WHEN COUNT COMPLETE 0501 0424 81 RTS 0502 0503 * SUBROUTINE TO PLAY A TONE OF SPECIFIED FREQUENCIES WHILE BUTTON DOWN 0504 0425 PLAY3 EQU * 0505 0425 cd 04 9a JSR CLRTON CLEAR TONE COUNTERS 0506 0428 cd 04 84 JSR SETTIM SET UP TIMER FOR SAMPLING AT 12 KHZ 0507 042b 1c 12 BSET 6,TCR ENABLE TIMER INTERRUPTS 0508 042d 2e fe HOLD2 BIL HOLD2 PLAY WHILE BUTTON IS DOWN 0509 042f 1d 12 BCLR 6,TCR DISABLE INTERRUPTS WHEN COUNT COMPLETE 0510 0431 81 RTS 0511 0512 *TIMER INTERRUPT SERVICE ROUIINE 0513 0514 *SET UP TIMER FOR NEXT SAMPLING PERIOD 0515 0432 TIMISR EQU * 0516 0432 b6 13 LDA TSR CLEAR OUTPUT COMPARE FLAG 0517 0434 b6 1a LDA ACHR GET HIGH BYTE OF CURRENT TIMER COUNT 0518 0436 b7 41 STA TIMHI SAVE IT 0519 0438 b6 1b LDA ACLR GET LOW BYTE OF CURRENT TIMER COUNT 0520 043a ab 25 ADD #SAMCNT ADD OFFSET FOR 12KHZ SAMPLING RATE 0521 043c b7 40 STA TIMLO SAVE IT 0522 043e 4f CLRA 0523 043f b9 41 ADC TIMHI ADD CARRY BIT TO HIGH COUNT 0524 0441 b7 16 STA OCHR STORE HIGH BYTE OF COMPARE REG 0525 0443 b6 40 LDA TIMLO GET LOW TIMER VALUE 0526 0445 b7 17 STA OCLR FINISH OUTPUT COMPARE WRITE 0527 0528 *DON'T MESS WITH ANYTHING IN THE ISR ABOVE THIS LINE! 0529 0530 0447 b6 34 LDA INC1LO GET LO INCREMENT FOR TONE 1 0531 0449 bb 30 ADD PTR1LO ADD IT TO THE LO TONE 1 COUNTER 0532 044b b7 30 STA PTR1LO SAVE IT BACK 0533 044d b6 35 LDA INC1HI GET HI INCREMENT FOR TONE 1 0534 044f b9 31 ADC PTR1HI ADD IT TO THE HI TONE 1 COUNTER 0535 0451 b7 31 STA PTR1HI SAVE IT BACK 0536 0537 0453 b6 36 LDA INC2LO GET LO INCREMENT FOR TONE 2 0538 0455 bb 32 ADD PTR2LO ADD IT TO THE LO TONE 2 COUNTER 0539 0457 b7 32 STA PTR2LO SAVE IT BACK 0540 0459 b6 37 LDA INC2HI GET HI INCREMENT FOR TONE 2 0541 045b b9 33 ADC PTR2HI ADD IT TO THE HI TONE 2 COUNTER 0542 045d b7 33 STA PTR2HI SAVE IT BACK 0543 0544 045f be 31 LDX PTR1HI GET THE TONE 1 TABLE INDEX 0545 0461 d6 0a 21 LDA SINTBL,X GET TONE 1 TABLE VALUE 0546 0464 b7 45 STA TEMP SAVE IT 0547 0466 be 33 LDX PTR2HI GET THE TONE 2 TABLE INDEX 0548 0468 d6 0a 21 LDA SINTBL,X GET TONE 2 TABLE VALUE 0549 046b bb 45 ADD TEMP SUM THE VALUES 0550 046d 46 RORA DIVIDE BY TWO FOR THE MEAN VALUE 0551 046e b7 01 STA PORTB SEND IT TO THE D/A PORT 0552 0553 0470 3c 38 INC SAMPLO INCREMENT THE SAMPLE COUNTER 0554 0472 26 02 BNE NEXT RETURN, IF NOT GREATER THAN FF 0555 0474 3c 39 INC SAMPHI IF ROLLED OVER, INC HI BYTE 0556 0476 80 NEXT RTI 0557 0558 *SEE IF CORRECT NUMBER OF SAMPLES COUNTED FOR TONE BURST 0559 0477 CHKCNT EQU * 0560 0477 b6 39 LDA SAMPHI GET HI BYTE OF SAMPLING COUNT 0561 0479 b1 44 CMP CTHI CHECK WITH HI BYTE OF LIMIT 0562 047b 25 fa BLO CHKCNT DO AGAIN IF NO MATCH 0563 047d b6 38 CHKLO LDA SAMPLO GET LO BYTE OF SAMPLING COUNT 0564 047f b1 43 CMP CTLO CHECK WITH LO BYTE OF LIMIT 0565 0481 25 fa BLO CHKLO DO AGAIN IF NO MATCH 0566 0483 81 RTS RETURN WHEN CYCLE COUNTS MATCH 0567 0568 *SET UP TIMER FOR NEXT SAMPLING PERIOD 0569 0484 SETTIM EQU * 0570 0484 b6 13 LDA TSR CLEAR OUTPUT COMPARE FLAG 0571 0486 b6 1a LDA ACHR GET HIGH BYTE OF CURRENT TIMER COUNT 0572 0488 b7 41 STA TIMHI SAVE IT 0573 048a b6 1b LDA ACLR GET LOW BYTE OF CURRENT TIMER COUNT 0574 048c ab 25 ADD #SAMCNT ADD OFFSET FOR 12KHZ SAMPLING RATE 0575 048e b7 40 STA TIMLO SAVE IT 0576 0490 4f CLRA 0577 0491 b9 41 ADC TIMHI ADD CARRY BIT TO HIGH COUNT 0578 0493 b7 16 STA OCHR STORE HIGH BYTE OF COMPARE REG 0579 0495 b6 40 LDA TIMLO GET LOW TIMER VALUE 0580 0497 b7 17 STA OCLR FINISH OUTPUT COMPARE WRITE 0581 0499 81 RTS 0582 0583 * CLEAR TONE GENERATION REGISTERS 0584 049a CLRTON EQU * 0585 049a 3f 30 CLR PTR1LO CLEAR TONE 1 POINTER 0586 049c 3f 31 CLR PTR1HI 0587 049e 3f 32 CLR PTR2LO CLEAR TONE 2 POINTER 0588 04a0 3f 33 CLR PTR2HI 0589 04a2 3f 38 CLR SAMPLO CLEAR SAMPLING COUNTER 0590 04a4 3f 39 CLR SAMPHI 0591 04a6 81 RTS 0592 0593 04a7 NOTONE EQU * 0594 04a7 3f 34 CLR INC1LO 0595 04a9 3f 35 CLR INC1HI 0596 04ab 3f 36 CLR INC2LO 0597 04ad 3f 37 CLR INC2HI 0598 04af 81 RTS 0599 0600 04b0 SWITCH EQU * IRQ ISR FOR SWITCH PRESS DETECT 0601 04b0 80 RTI JUST RESTORE THE STACK AND CONTINUE 0602 0603 04b1 WAIT EQU * 37 MS DELAY FOR SWITCH DEBOUNCE 0604 04b1 a6 63 LDA #$63 SET OUTER LOOP VALUE 0605 04b3 b7 49 STA TEMP1 0606 04b5 a6 ff LOOP1 LDA #$FF SET INNER LOOP VALUE 0607 04b7 4a LOOP DECA DECREMENT 0608 04b8 26 fd BNE LOOP LOOP TO ZERO 0609 04ba 3a 49 DEC TEMP1 DECREMENT OUTER LOOP 0610 04bc 26 f7 BNE LOOP1 LOOP TO ZERO 0611 04be 81 RTS 0612 0613 04bf TOGGLE EQU * SUBROUTINE TO TOGGLE BETWEEN MF and DTMF MODES 0614 04bf b6 47 LDA MODE GET CURRENT MODE 0615 04c1 27 06 BEQ TODTMF SET TO DTMF IF MF MODE 0616 04c3 3f 47 CLR MODE SET TO MF IF DTMF MODE 0617 04c5 cd 08 14 JSR HILO BEEP TO INDICATE MODE CHANGE 0618 04c8 81 RTS 0619 04c9 a6 01 TODTMF LDA #$01 SET TO DTMF MODE 0620 04cb b7 47 STA MODE 0621 04cd cd 07 ed JSR LOHI BEEP TO INDICATE MODE CHANGE 0622 04d0 81 RTS 0623 0624 04d1 BURST EQU * ROUTINE TO TOGGLE MF BURST MODE 0625 04d1 b6 48 LDA BSTFLG GET CURRENT MODE 0626 04d3 27 06 BEQ TOCONT SET TO CONTINUOUS IF BURST MODE 0627 04d5 3f 48 CLR BSTFLG SET TO BURST IF CONTINUOUS MODE 0628 04d7 cd 08 14 JSR HILO BEEP TO INDICATE MODE CHANGE 0629 04da 81 RTS 0630 04db a6 01 TOCONT LDA #$01 SET TO CONTINUOUS MODE 0631 04dd b7 48 STA BSTFLG 0632 04df cd 07 ed JSR LOHI BEEP TO INDICATE MODE CHANGE 0633 04e2 81 RTS 0634 0635 04e3 CALIB EQU * ROUTINE TO TOGGLE CALIBRATION MODE 0636 04e3 b6 51 LDA CALFLG GET CURRENT MODE 0637 04e5 27 06 BEQ TOCAL SET TO CALIBRATE MODE IF NOT 0638 04e7 3f 51 CLR CALFLG SET TO MF IF DTMF MODE 0639 04e9 cd 08 14 JSR HILO BEEP TO INDICATE MODE CHANGE 0640 04ec 81 RTS 0641 04ed a6 01 TOCAL LDA #$01 SET TO CALIBRATE MODE 0642 04ef b7 51 STA CALFLG 0643 04f1 cd 07 ed JSR LOHI BEEP TO INDICATE MODE CHANGE 0644 04f4 81 RTS 0645 0646 04f5 MF EQU * ROUTINE TO PLAY MF DIGIT AT 75 MS DURATION 0647 04f5 a6 7e LDA #$7E 0648 04f7 b7 43 STA CTLO SAMPLE COUNT FOR REQUIRED TONE DURATION 0649 04f9 a6 03 LDA #$03 OF 75 MS (VALID RANGE IS 58 TO 75 MS): 0650 04fb b7 44 STA CTHI COUNT = TIME / 83.933 MICROSECS 0651 04fd b6 48 LDA BSTFLG GET MF BURST MODE FLAG 0652 04ff 27 04 BEQ PLAYBST PLAY BURST IF IN BURST MODE 0653 0501 cd 04 25 JSR PLAY3 IF IN CONTINUOUS MODE, PLAY WHILE KEY DOWN 0654 0504 81 RTS 0655 0505 cd 03 f9 PLAYBST JSR PLAY PLAY IT 0656 0508 81 RTS 0657 0658 0509 BLEEP EQU * ROUTINE TO PLAY TONE AT 75 MS DURATION 0659 0509 a6 7e LDA #$7E 0660 050b b7 43 STA CTLO SAMPLE COUNT FOR REQUIRED TONE DURATION 0661 050d a6 03 LDA #$03 OF 75 MS (VALID RANGE IS 58 TO 75 MS): 0662 050f b7 44 STA CTHI COUNT = TIME / 83.933 MICROSECS 0663 0511 cd 03 f9 JSR PLAY PLAY IT 0664 0514 81 RTS 0665 0666 0515 a6 0a MFONE LDA #$0A LOW BYTE FOR TONE 1, 700 HZ (5.5006 x f) 0667 0517 b7 34 STA INC1LO 0668 0519 a6 0f LDA #$0F HI BYTE FOR TONE 1 0669 051b b7 35 STA INC1HI 0670 051d a6 57 LDA #$57 LOW BYTE FOR TONE 2, 900 HZ (5.5006 x f) 0671 051f b7 36 STA INC2LO 0672 0521 a6 13 LDA #$13 HI BYTE FOR TONE 2 0673 0523 b7 37 STA INC2HI 0674 0525 cd 04 f5 JSR MF 0675 0528 81 RTS 0676 0677 0529 a6 0a MFTWO LDA #$0A LOW BYTE FOR TONE 1, 700 HZ (5.5006 x f) 0678 052b b7 34 STA INC1LO 0679 052d a6 0f LDA #$0F HI BYTE FOR TONE 1 0680 052f b7 35 STA INC1HI 0681 0531 a6 a3 LDA #$A3 LOW BYTE FOR TONE 2, 1100 HZ (5.5006 x f) 0682 0533 b7 36 STA INC2LO 0683 0535 a6 17 LDA #$17 HI BYTE FOR TONE 2 0684 0537 b7 37 STA INC2HI 0685 0539 cd 04 f5 JSR MF 0686 053c 81 RTS 0687 0688 053d a6 57 MFTHREE LDA #$57 LOW BYTE FOR TONE 1, 900 HZ (5.5006 x f) 0689 053f b7 34 STA INC1LO 0690 0541 a6 13 LDA #$13 HI BYTE FOR TONE 1 0691 0543 b7 35 STA INC1HI 0692 0545 a6 a3 LDA #$A3 LOW BYTE FOR TONE 2, 1100 HZ (5.5006 x f) 0693 0547 b7 36 STA INC2LO 0694 0549 a6 17 LDA #$17 HI BYTE FOR TONE 2 0695 054b b7 37 STA INC2HI 0696 054d cd 04 f5 JSR MF 0697 0550 81 RTS 0698 0699 0551 a6 0a MFFOUR LDA #$0A LOW BYTE FOR TONE 1, 700 HZ (5.5006 x f) 0700 0553 b7 34 STA INC1LO 0701 0555 a6 0f LDA #$0F HI BYTE FOR TONE 1 0702 0557 b7 35 STA INC1HI 0703 0559 a6 ef LDA #$EF LOW BYTE FOR TONE 2, 1300 HZ (5.5006 x f) 0704 055b b7 36 STA INC2LO 0705 055d a6 1b LDA #$1B HI BYTE FOR TONE 2 0706 055f b7 37 STA INC2HI 0707 0561 cd 04 f5 JSR MF 0708 0564 81 RTS 0709 0710 0565 a6 57 MFFIVE LDA #$57 LOW BYTE FOR TONE 1, 900 HZ (5.5006 x f) 0711 0567 b7 34 STA INC1LO 0712 0569 a6 13 LDA #$13 HI BYTE FOR TONE 1 0713 056b b7 35 STA INC1HI 0714 056d a6 ef LDA #$EF LOW BYTE FOR TONE 2, 1300 HZ (5.5006 x f) 0715 056f b7 36 STA INC2LO 0716 0571 a6 1b LDA #$1B HI BYTE FOR TONE 2 0717 0573 b7 37 STA INC2HI 0718 0575 cd 04 f5 JSR MF 0719 0578 81 RTS 0720 0721 0579 a6 a3 MFSIX LDA #$A3 LOW BYTE FOR TONE 1, 1100 HZ (5.5006 x f) 0722 057b b7 34 STA INC1LO 0723 057d a6 17 LDA #$17 HI BYTE FOR TONE 1 0724 057f b7 35 STA INC1HI 0725 0581 a6 ef LDA #$EF LOW BYTE FOR TONE 2, 1300 HZ (5.5006 x f) 0726 0583 b7 36 STA INC2LO 0727 0585 a6 1b LDA #$1B HI BYTE FOR TONE 2 0728 0587 b7 37 STA INC2HI 0729 0589 cd 04 f5 JSR MF 0730 058c 81 RTS 0731 0732 058d a6 0a MFSEVEN LDA #$0A LOW BYTE FOR TONE 1, 700 HZ (5.5006 x f) 0733 058f b7 34 STA INC1LO 0734 0591 a6 0f LDA #$0F HI BYTE FOR TONE 1 0735 0593 b7 35 STA INC1HI 0736 0595 a6 3b LDA #$3B LOW BYTE FOR TONE 2, 1500 HZ (5.5006 x f) 0737 0597 b7 36 STA INC2LO 0738 0599 a6 20 LDA #$20 HI BYTE FOR TONE 2 0739 059b b7 37 STA INC2HI 0740 059d cd 04 f5 JSR MF 0741 05a0 81 RTS 0742 0743 05a1 a6 57 MFEIGHT LDA #$57 LOW BYTE FOR TONE 1, 900 HZ (5.5006 x f) 0744 05a3 b7 34 STA INC1LO 0745 05a5 a6 13 LDA #$13 HI BYTE FOR TONE 1 0746 05a7 b7 35 STA INC1HI 0747 05a9 a6 3b LDA #$3B LOW BYTE FOR TONE 2, 1500 HZ (5.5006 x f) 0748 05ab b7 36 STA INC2LO 0749 05ad a6 20 LDA #$20 HI BYTE FOR TONE 2 0750 05af b7 37 STA INC2HI 0751 05b1 cd 04 f5 JSR MF 0752 05b4 81 RTS 0753 0754 05b5 a6 a3 MFNINE LDA #$A3 LOW BYTE FOR TONE 1, 1100 HZ (5.5006 x f) 0755 05b7 b7 34 STA INC1LO 0756 05b9 a6 17 LDA #$17 HI BYTE FOR TONE 1 0757 05bb b7 35 STA INC1HI 0758 05bd a6 3b LDA #$3B LOW BYTE FOR TONE 2, 1500 HZ (5.5006 x f) 0759 05bf b7 36 STA INC2LO 0760 05c1 a6 20 LDA #$20 HI BYTE FOR TONE 2 0761 05c3 b7 37 STA INC2HI 0762 05c5 cd 04 f5 JSR MF 0763 05c8 81 RTS 0764 0765 05c9 a6 a3 KP1 LDA #$A3 LOW BYTE FOR TONE 1, 1100 HZ (5.5006 x f) 0766 05cb b7 34 STA INC1LO 0767 05cd a6 17 LDA #$17 HI BYTE FOR TONE 1 0768 05cf b7 35 STA INC1HI 0769 05d1 a6 87 LDA #$87 LOW BYTE FOR TONE 2, 1700 HZ (5.5006 x f) 0770 05d3 b7 36 STA INC2LO 0771 05d5 a6 24 LDA #$24 HI BYTE FOR TONE 2 0772 05d7 b7 37 STA INC2HI 0773 05d9 a6 96 LDA #$96 0774 05db b7 43 STA CTLO SAMPLE COUNT FOR REQUIRED TONE DURATION 0775 05dd a6 05 LDA #$05 OF 120 MS (VALID KP RANGE IS 90 TO 120 MS) 0776 05df b7 44 STA CTHI COUNT = TIME / 83.933 MICROSECS 0777 05e1 b6 48 LDA BSTFLG GET MF BURST MODE FLAG 0778 05e3 27 04 BEQ BST PLAY BURST IF IN BURST MODE 0779 05e5 cd 04 25 JSR PLAY3 IF IN CONTINUOUS MODE, PLAY WHILE KEY DOWN 0780 05e8 81 RTS 0781 05e9 cd 03 f9 BST JSR PLAY PLAY IT 0782 05ec 81 RTS 0783 0784 05ed a6 ef MFZERO LDA #$EF LOW BYTE FOR TONE 1, 1300 HZ (5.5006 x f) 0785 05ef b7 34 STA INC1LO 0786 05f1 a6 1b LDA #$1B HI BYTE FOR TONE 1 0787 05f3 b7 35 STA INC1HI 0788 05f5 a6 3b LDA #$3B LOW BYTE FOR TONE 2, 1500 HZ (5.5006 x f) 0789 05f7 b7 36 STA INC2LO 0790 05f9 a6 20 LDA #$20 HI BYTE FOR TONE 2 0791 05fb b7 37 STA INC2HI 0792 05fd cd 04 f5 JSR MF 0793 0600 81 RTS 0794 0795 0601 a6 3b ST LDA #$3B LOW BYTE FOR TONE 1, 1500 HZ (5.5006 x f) 0796 0603 b7 34 STA INC1LO 0797 0605 a6 20 LDA #$20 HI BYTE FOR TONE 1 0798 0607 b7 35 STA INC1HI 0799 0609 a6 87 LDA #$87 LOW BYTE FOR TONE 2, 1700 HZ (5.5006 x f) 0800 060b b7 36 STA INC2LO 0801 060d a6 24 LDA #$24 HI BYTE FOR TONE 2 0802 060f b7 37 STA INC2HI 0803 0611 cd 04 f5 JSR MF 0804 0614 81 RTS 0805 0806 * 2600 BEEP ROUTINE 0807 0615 BEEP EQU * BEEP ROUTINE, 2600 HZ 0808 0615 a6 de LDA #$DE LOW BYTE FOR TONE 1, 2600 HZ (5.5006 x f) 0809 0617 b7 34 STA INC1LO 0810 0619 a6 37 LDA #$37 HI BYTE FOR TONE 1 0811 061b b7 35 STA INC1HI 0812 061d a6 de LDA #$DE LOW BYTE FOR TONE 2, 2600 HZ (5.5006 x f) 0813 061f b7 36 STA INC2LO 0814 0621 a6 37 LDA #$37 HI BYTE FOR TONE 2 0815 0623 b7 37 STA INC2HI 0816 0625 a6 8a LDA #$8A 0817 0627 b7 43 STA CTLO SAMPLE COUNT FOR REQUIRED TONE DURATION (NOT USED) 0818 0629 a6 2e LDA #$2E OF 1000 MS: 0819 062b b7 44 STA CTHI COUNT = TIME / 83.933 MICROSECS 0820 062d cd 04 25 JSR PLAY3 PLAY IT WHILE BUTTON DOWN 0821 0630 81 RTS 0822 0823 * DIALTONE ROUTINE 0824 0631 a6 85 DIALTN LDA #$85 LOW BYTE FOR TONE 1, 350 HZ (5.5006 x f) 0825 0633 b7 34 STA INC1LO 0826 0635 a6 07 LDA #$07 HI BYTE FOR TONE 1 0827 0637 b7 35 STA INC1HI 0828 0639 a6 74 LDA #$74 LOW BYTE FOR TONE 2, 440 HZ (5.5006 x f) 0829 063b b7 36 STA INC2LO 0830 063d a6 09 LDA #$09 HI BYTE FOR TONE 2 0831 063f b7 37 STA INC2HI 0832 0641 cd 04 25 JSR PLAY3 0833 0644 81 RTS 0834 0835 * RING TONE ROUTINE 0836 0645 a6 74 RINGBK LDA #$74 LOW BYTE FOR TONE 1, 440 HZ (5.5006 x f) 0837 0647 b7 34 STA INC1LO 0838 0649 a6 09 LDA #$09 HI BYTE FOR TONE 1 0839 064b b7 35 STA INC1HI 0840 064d a6 50 LDA #$50 LOW BYTE FOR TONE 2, 480 HZ (5.5006 x f) 0841 064f b7 36 STA INC2LO 0842 0651 a6 0a LDA #$0A HI BYTE FOR TONE 2 0843 0653 b7 37 STA INC2HI 0844 0655 a6 15 LDA #$15 0845 0657 b7 43 STA CTLO SAMPLE COUNT FOR REQUIRED TONE DURATION 0846 0659 a6 5d LDA #$5D OF 2000 MS: 0847 065b b7 44 STA CTHI COUNT = TIME / 83.933 MICROSECS 0848 065d cd 03 f9 JSR PLAY PLAY IT 0849 0660 cd 04 a7 JSR NOTONE SET FOR SILENCE 0850 0663 a6 29 LDA #$29 0851 0665 b7 43 STA CTLO SAMPLE COUNT FOR REQUIRED TONE DURATION 0852 0667 a6 ba LDA #$BA OF 4000 MS: 0853 0669 b7 44 STA CTHI COUNT = TIME / 83.933 MICROSECS 0854 066b cd 03 f9 JSR PLAY PLAY IT 0855 066e 2e d5 BIL RINGBK REPEAT UNTIL KEY RELEASED 0856 0670 81 RTS 0857 0858 * BUSY TONE ROUTINE 0859 0671 a6 50 BUSYTN LDA #$50 LOW BYTE FOR TONE 1, 480 HZ (5.5006 x f) 0860 0673 b7 34 STA INC1LO 0861 0675 a6 0a LDA #$0A HI BYTE FOR TONE 1 0862 0677 b7 35 STA INC1HI 0863 0679 a6 52 LDA #$52 LOW BYTE FOR TONE 2, 620 HZ (5.5006 x f) 0864 067b b7 36 STA INC2LO 0865 067d a6 0d LDA #$0D HI BYTE FOR TONE 2 0866 067f b7 37 STA INC2HI 0867 0681 a6 45 LDA #$45 0868 0683 b7 43 STA CTLO SAMPLE COUNT FOR REQUIRED TONE DURATION 0869 0685 a6 17 LDA #$17 OF 500 MS: 0870 0687 b7 44 STA CTHI COUNT = TIME / 83.933 MICROSECS 0871 0689 cd 04 07 JSR PLAY2 0872 068c 2e e3 BIL BUSYTN REPEAT UNTIL KEY RELEASED 0873 068e 81 RTS 0874 0875 * REORDER TONE ROUTINE 0876 068f a6 50 REORDTN LDA #$50 LOW BYTE FOR TONE 1, 480 HZ (5.5006 x f) 0877 0691 b7 34 STA INC1LO 0878 0693 a6 0a LDA #$0A HI BYTE FOR TONE 1 0879 0695 b7 35 STA INC1HI 0880 0697 a6 52 LDA #$52 LOW BYTE FOR TONE 2, 620 HZ (5.5006 x f) 0881 0699 b7 36 STA INC2LO 0882 069b a6 0d LDA #$0D HI BYTE FOR TONE 2 0883 069d b7 37 STA INC2HI 0884 069f a6 a3 LDA #$A3 0885 06a1 b7 43 STA CTLO SAMPLE COUNT FOR REQUIRED TONE DURATION 0886 06a3 a6 0b LDA #$0B OF 250 MS: 0887 06a5 b7 44 STA CTHI COUNT = TIME / 83.933 MICROSECS 0888 06a7 cd 04 07 JSR PLAY2 0889 06aa 2e e3 BIL REORDTN REPEAT UNTIL KEY RELEASED 0890 06ac 81 RTS 0891 0892 06ad a6 fa DIONE LDA #$FA LOW BYTE FOR TONE 1, 697 HZ (5.5006 x f) 0893 06af b7 34 STA INC1LO 0894 06b1 a6 0e LDA #$0E HI BYTE FOR TONE 1 0895 06b3 b7 35 STA INC1HI 0896 06b5 a6 fa LDA #$FA LOW BYTE FOR TONE 2, 1209 HZ (5.5006 x f) 0897 06b7 b7 36 STA INC2LO 0898 06b9 a6 19 LDA #$19 HI BYTE FOR TONE 2 0899 06bb b7 37 STA INC2HI 0900 06bd cd 04 25 JSR PLAY3 0901 06c0 81 RTS 0902 0903 06c1 a6 fa DITWO LDA #$FA LOW BYTE FOR TONE 1, 697 HZ (5.5006 x f) 0904 06c3 b7 34 STA INC1LO 0905 06c5 a6 0e LDA #$0E HI BYTE FOR TONE 1 0906 06c7 b7 35 STA INC1HI 0907 06c9 a6 b5 LDA #$B5 LOW BYTE FOR TONE 2, 1336 HZ (5.5006 x f) 0908 06cb b7 36 STA INC2LO 0909 06cd a6 1c LDA #$1C HI BYTE FOR TONE 2 0910 06cf b7 37 STA INC2HI 0911 06d1 cd 04 25 JSR PLAY3 0912 06d4 81 RTS 0913 0914 06d5 a6 fa DITHREE LDA #$FA LOW BYTE FOR TONE 1, 697 HZ (5.5006 x f) 0915 06d7 b7 34 STA INC1LO 0916 06d9 a6 0e LDA #$0E HI BYTE FOR TONE 1 0917 06db b7 35 STA INC1HI 0918 06dd a6 bc LDA #$BC LOW BYTE FOR TONE 2, 1477 HZ (5.5006 x f) 0919 06df b7 36 STA INC2LO 0920 06e1 a6 1f LDA #$1F HI BYTE FOR TONE 2 0921 06e3 b7 37 STA INC2HI 0922 06e5 cd 04 25 JSR PLAY3 0923 06e8 81 RTS 0924 0925 06e9 a6 fa AAA LDA #$FA LOW BYTE FOR TONE 1, 697 HZ (5.5006 x f) 0926 06eb b7 34 STA INC1LO 0927 06ed a6 0e LDA #$0E HI BYTE FOR TONE 1 0928 06ef b7 35 STA INC1HI 0929 06f1 a6 16 LDA #$16 LOW BYTE FOR TONE 2, 1633 HZ (5.5006 x f) 0930 06f3 b7 36 STA INC2LO 0931 06f5 a6 23 LDA #$23 HI BYTE FOR TONE 2 0932 06f7 b7 37 STA INC2HI 0933 06f9 cd 04 25 JSR PLAY3 0934 06fc 81 RTS 0935 0936 06fd a6 8b DIFOUR LDA #$8B LOW BYTE FOR TONE 1, 770 HZ (5.5006 x f) 0937 06ff b7 34 STA INC1LO 0938 0701 a6 10 LDA #$10 HI BYTE FOR TONE 1 0939 0703 b7 35 STA INC1HI 0940 0705 a6 fa LDA #$FA LOW BYTE FOR TONE 2, 1209 HZ (5.5006 x f) 0941 0707 b7 36 STA INC2LO 0942 0709 a6 19 LDA #$19 HI BYTE FOR TONE 2 0943 070b b7 37 STA INC2HI 0944 070d cd 04 25 JSR PLAY3 0945 0710 81 RTS 0946 0947 0711 a6 8b DIFIVE LDA #$8B LOW BYTE FOR TONE 1, 770 HZ (5.5006 x f) 0948 0713 b7 34 STA INC1LO 0949 0715 a6 10 LDA #$10 HI BYTE FOR TONE 1 0950 0717 b7 35 STA INC1HI 0951 0719 a6 b5 LDA #$B5 LOW BYTE FOR TONE 2, 1336 HZ (5.5006 x f) 0952 071b b7 36 STA INC2LO 0953 071d a6 1c LDA #$1C HI BYTE FOR TONE 2 0954 071f b7 37 STA INC2HI 0955 0721 cd 04 25 JSR PLAY3 0956 0724 81 RTS 0957 0958 0725 a6 8b DISIX LDA #$8B LOW BYTE FOR TONE 1, 770 HZ (5.5006 x f) 0959 0727 b7 34 STA INC1LO 0960 0729 a6 10 LDA #$10 HI BYTE FOR TONE 1 0961 072b b7 35 STA INC1HI 0962 072d a6 bc LDA #$BC LOW BYTE FOR TONE 2, 1477 HZ (5.5006 x f) 0963 072f b7 36 STA INC2LO 0964 0731 a6 1f LDA #$1F HI BYTE FOR TONE 2 0965 0733 b7 37 STA INC2HI 0966 0735 cd 04 25 JSR PLAY3 0967 0738 81 RTS 0968 0969 0739 a6 8b BBB LDA #$8B LOW BYTE FOR TONE 1, 770 HZ (5.5006 x f) 0970 073b b7 34 STA INC1LO 0971 073d a6 10 LDA #$10 HI BYTE FOR TONE 1 0972 073f b7 35 STA INC1HI 0973 0741 a6 16 LDA #$16 LOW BYTE FOR TONE 2, 1633 HZ (5.5006 x f) 0974 0743 b7 36 STA INC2LO 0975 0745 a6 23 LDA #$23 HI BYTE FOR TONE 2 0976 0747 b7 37 STA INC2HI 0977 0749 cd 04 25 JSR PLAY3 0978 074c 81 RTS 0979 0980 074d a6 4f DISEVEN LDA #$4F LOW BYTE FOR TONE 1, 852 HZ (5.5006 x f) 0981 074f b7 34 STA INC1LO 0982 0751 a6 12 LDA #$12 HI BYTE FOR TONE 1 0983 0753 b7 35 STA INC1HI 0984 0755 a6 fa LDA #$FA LOW BYTE FOR TONE 2, 1209 HZ (5.5006 x f) 0985 0757 b7 36 STA INC2LO 0986 0759 a6 19 LDA #$19 HI BYTE FOR TONE 2 0987 075b b7 37 STA INC2HI 0988 075d cd 04 25 JSR PLAY3 0989 0760 81 RTS 0990 0991 0761 a6 4f DIEIGHT LDA #$4F LOW BYTE FOR TONE 1, 852 HZ (5.5006 x f) 0992 0763 b7 34 STA INC1LO 0993 0765 a6 12 LDA #$12 HI BYTE FOR TONE 1 0994 0767 b7 35 STA INC1HI 0995 0769 a6 b5 LDA #$B5 LOW BYTE FOR TONE 2, 1336 HZ (5.5006 x f) 0996 076b b7 36 STA INC2LO 0997 076d a6 1c LDA #$1C HI BYTE FOR TONE 2 0998 076f b7 37 STA INC2HI 0999 0771 cd 04 25 JSR PLAY3 1000 0774 81 RTS 1001 1002 0775 a6 4f DININE LDA #$4F LOW BYTE FOR TONE 1, 852 HZ (5.5006 x f) 1003 0777 b7 34 STA INC1LO 1004 0779 a6 12 LDA #$12 HI BYTE FOR TONE 1 1005 077b b7 35 STA INC1HI 1006 077d a6 bc LDA #$BC LOW BYTE FOR TONE 2, 1477 HZ (5.5006 x f) 1007 077f b7 36 STA INC2LO 1008 0781 a6 1f LDA #$1F HI BYTE FOR TONE 2 1009 0783 b7 37 STA INC2HI 1010 0785 cd 04 25 JSR PLAY3 1011 0788 81 RTS 1012 1013 0789 a6 4f CCC LDA #$4F LOW BYTE FOR TONE 1, 852 HZ (5.5006 x f) 1014 078b b7 34 STA INC1LO 1015 078d a6 12 LDA #$12 HI BYTE FOR TONE 1 1016 078f b7 35 STA INC1HI 1017 0791 a6 16 LDA #$16 LOW BYTE FOR TONE 2, 1633 HZ (5.5006 x f) 1018 0793 b7 36 STA INC2LO 1019 0795 a6 23 LDA #$23 HI BYTE FOR TONE 2 1020 0797 b7 37 STA INC2HI 1021 0799 cd 04 25 JSR PLAY3 1022 079c 81 RTS 1023 1024 079d a6 38 STAR LDA #$38 LOW BYTE FOR TONE 1, 941 HZ (5.5006 x f) 1025 079f b7 34 STA INC1LO 1026 07a1 a6 14 LDA #$14 HI BYTE FOR TONE 1 1027 07a3 b7 35 STA INC1HI 1028 07a5 a6 fa LDA #$FA LOW BYTE FOR TONE 2, 1209 HZ (5.5006 x f) 1029 07a7 b7 36 STA INC2LO 1030 07a9 a6 19 LDA #$19 HI BYTE FOR TONE 2 1031 07ab b7 37 STA INC2HI 1032 07ad cd 04 25 JSR PLAY3 1033 07b0 81 RTS 1034 1035 07b1 a6 38 DIZERO LDA #$38 LOW BYTE FOR TONE 1, 941 HZ (5.5006 x f) 1036 07b3 b7 34 STA INC1LO 1037 07b5 a6 14 LDA #$14 HI BYTE FOR TONE 1 1038 07b7 b7 35 STA INC1HI 1039 07b9 a6 b5 LDA #$B5 LOW BYTE FOR TONE 2, 1336 HZ (5.5006 x f) 1040 07bb b7 36 STA INC2LO 1041 07bd a6 1c LDA #$1C HI BYTE FOR TONE 2 1042 07bf b7 37 STA INC2HI 1043 07c1 cd 04 25 JSR PLAY3 1044 07c4 81 RTS 1045 1046 07c5 a6 38 POUND LDA #$38 LOW BYTE FOR TONE 1, 941 HZ (5.5006 x f) 1047 07c7 b7 34 STA INC1LO 1048 07c9 a6 14 LDA #$14 HI BYTE FOR TONE 1 1049 07cb b7 35 STA INC1HI 1050 07cd a6 bc LDA #$BC LOW BYTE FOR TONE 2, 1477 HZ (5.5006 x f) 1051 07cf b7 36 STA INC2LO 1052 07d1 a6 1f LDA #$1F HI BYTE FOR TONE 2 1053 07d3 b7 37 STA INC2HI 1054 07d5 cd 04 25 JSR PLAY3 1055 07d8 81 RTS 1056 1057 07d9 a6 38 DDD LDA #$38 LOW BYTE FOR TONE 1, 941 HZ (5.5006 x f) 1058 07db b7 34 STA INC1LO 1059 07dd a6 14 LDA #$14 HI BYTE FOR TONE 1 1060 07df b7 35 STA INC1HI 1061 07e1 a6 16 LDA #$16 LOW BYTE FOR TONE 2, 1633 HZ (5.5006 x f) 1062 07e3 b7 36 STA INC2LO 1063 07e5 a6 23 LDA #$23 HI BYTE FOR TONE 2 1064 07e7 b7 37 STA INC2HI 1065 07e9 cd 04 25 JSR PLAY3 1066 07ec 81 RTS 1067 1068 07ed a6 ef LOHI LDA #$EF LOW BYTE FOR TONE 1, 1300 HZ (5.5006 x f) 1069 07ef b7 34 STA INC1LO 1070 07f1 a6 1b LDA #$1B HI BYTE FOR TONE 1 1071 07f3 b7 35 STA INC1HI 1072 07f5 a6 ef LDA #$EF LOW BYTE FOR TONE 2, 1300 HZ (5.5006 x f) 1073 07f7 b7 36 STA INC2LO 1074 07f9 a6 1b LDA #$1B HI BYTE FOR TONE 2 1075 07fb b7 37 STA INC2HI 1076 07fd cd 05 09 JSR BLEEP 1077 0800 a6 87 LDA #$87 LOW BYTE FOR TONE 1, 1700 HZ (5.5006 x f) 1078 0802 b7 34 STA INC1LO 1079 0804 a6 24 LDA #$24 HI BYTE FOR TONE 1 1080 0806 b7 35 STA INC1HI 1081 0808 a6 87 LDA #$87 LOW BYTE FOR TONE 2, 1700 HZ (5.5006 x f) 1082 080a b7 36 STA INC2LO 1083 080c a6 24 LDA #$24 HI BYTE FOR TONE 2 1084 080e b7 37 STA INC2HI 1085 0810 cd 05 09 JSR BLEEP 1086 0813 81 RTS 1087 1088 0814 a6 87 HILO LDA #$87 LOW BYTE FOR TONE 1, 1700 HZ (5.5006 x f) 1089 0816 b7 34 STA INC1LO 1090 0818 a6 24 LDA #$24 HI BYTE FOR TONE 1 1091 081a b7 35 STA INC1HI 1092 081c a6 87 LDA #$87 LOW BYTE FOR TONE 2, 1700 HZ (5.5006 x f) 1093 081e b7 36 STA INC2LO 1094 0820 a6 24 LDA #$24 HI BYTE FOR TONE 2 1095 0822 b7 37 STA INC2HI 1096 0824 cd 05 09 JSR BLEEP 1097 0827 a6 ef LDA #$EF LOW BYTE FOR TONE 1, 1300 HZ (5.5006 x f) 1098 0829 b7 34 STA INC1LO 1099 082b a6 1b LDA #$1B HI BYTE FOR TONE 1 1100 082d b7 35 STA INC1HI 1101 082f a6 ef LDA #$EF LOW BYTE FOR TONE 2, 1300 HZ (5.5006 x f) 1102 0831 b7 36 STA INC2LO 1103 0833 a6 1b LDA #$1B HI BYTE FOR TONE 2 1104 0835 b7 37 STA INC2HI 1105 0837 cd 05 09 JSR BLEEP 1106 083a 81 RTS 1107 1108 083b a6 0a T0700 LDA #$0A LOW BYTE FOR TONE 1, 700 HZ (5.5006 x f) 1109 083d b7 34 STA INC1LO 1110 083f a6 0f LDA #$0F HI BYTE FOR TONE 1 1111 0841 b7 35 STA INC1HI 1112 0843 a6 0a LDA #$0A LOW BYTE FOR TONE 2, 700 HZ (5.5006 x f) 1113 0845 b7 36 STA INC2LO 1114 0847 a6 0f LDA #$0F HI BYTE FOR TONE 2 1115 0849 b7 37 STA INC2HI 1116 084b cd 04 25 JSR PLAY3 1117 084e 81 RTS 1118 1119 084f a6 57 T0900 LDA #$57 LOW BYTE FOR TONE 1, 900 HZ (5.5006 x f) 1120 0851 b7 34 STA INC1LO 1121 0853 a6 13 LDA #$13 HI BYTE FOR TONE 1 1122 0855 b7 35 STA INC1HI 1123 0857 a6 57 LDA #$57 LOW BYTE FOR TONE 2, 900 HZ (5.5006 x f) 1124 0859 b7 36 STA INC2LO 1125 085b a6 13 LDA #$13 HI BYTE FOR TONE 2 1126 085d b7 37 STA INC2HI 1127 085f cd 04 25 JSR PLAY3 1128 0862 81 RTS 1129 1130 0863 a6 a3 T1100 LDA #$A3 LOW BYTE FOR TONE 1, 1100 HZ (5.5006 x f) 1131 0865 b7 34 STA INC1LO 1132 0867 a6 17 LDA #$17 HI BYTE FOR TONE 1 1133 0869 b7 35 STA INC1HI 1134 086b a6 a3 LDA #$A3 LOW BYTE FOR TONE 2, 1100 HZ (5.5006 x f) 1135 086d b7 36 STA INC2LO 1136 086f a6 17 LDA #$17 HI BYTE FOR TONE 2 1137 0871 b7 37 STA INC2HI 1138 0873 cd 04 25 JSR PLAY3 1139 0876 81 RTS 1140 1141 0877 a6 ef T1300 LDA #$EF LOW BYTE FOR TONE 1, 1300 HZ (5.5006 x f) 1142 0879 b7 34 STA INC1LO 1143 087b a6 1b LDA #$1B HI BYTE FOR TONE 1 1144 087d b7 35 STA INC1HI 1145 087f a6 ef LDA #$EF LOW BYTE FOR TONE 2, 1300 HZ (5.5006 x f) 1146 0881 b7 36 STA INC2LO 1147 0883 a6 1b LDA #$1B HI BYTE FOR TONE 2 1148 0885 b7 37 STA INC2HI 1149 0887 cd 04 25 JSR PLAY3 1150 088a 81 RTS 1151 1152 088b a6 3b T1500 LDA #$3B LOW BYTE FOR TONE 1, 1500 HZ (5.5006 x f) 1153 088d b7 34 STA INC1LO 1154 088f a6 20 LDA #$20 HI BYTE FOR TONE 1 1155 0891 b7 35 STA INC1HI 1156 0893 a6 3b LDA #$3B LOW BYTE FOR TONE 2, 1500 HZ (5.5006 x f) 1157 0895 b7 36 STA INC2LO 1158 0897 a6 20 LDA #$20 HI BYTE FOR TONE 2 1159 0899 b7 37 STA INC2HI 1160 089b cd 04 25 JSR PLAY3 1161 089e 81 RTS 1162 1163 089f a6 87 T1700 LDA #$87 LOW BYTE FOR TONE 1, 1700 HZ (5.5006 x f) 1164 08a1 b7 34 STA INC1LO 1165 08a3 a6 24 LDA #$24 HI BYTE FOR TONE 1 1166 08a5 b7 35 STA INC1HI 1167 08a7 a6 87 LDA #$87 LOW BYTE FOR TONE 2, 1700 HZ (5.5006 x f) 1168 08a9 b7 36 STA INC2LO 1169 08ab a6 24 LDA #$24 HI BYTE FOR TONE 2 1170 08ad b7 37 STA INC2HI 1171 08af cd 04 25 JSR PLAY3 1172 08b2 81 RTS 1173 1174 08b3 a6 93 T1004 LDA #$93 LOW BYTE FOR TONE 1, 1004 HZ (5.5006 x f) 1175 08b5 b7 34 STA INC1LO 1176 08b7 a6 15 LDA #$15 HI BYTE FOR TONE 1 1177 08b9 b7 35 STA INC1HI 1178 08bb a6 93 LDA #$93 LOW BYTE FOR TONE 2, 1004 HZ (5.5006 x f) 1179 08bd b7 36 STA INC2LO 1180 08bf a6 15 LDA #$15 HI BYTE FOR TONE 2 1181 08c1 b7 37 STA INC2HI 1182 08c3 cd 04 25 JSR PLAY3 1183 08c6 81 RTS 1184 1185 08c7 NICK EQU * 1186 08c7 a6 87 LDA #$87 LOW BYTE FOR TONE 1, 1700 HZ (5.5006 x f) 1187 08c9 b7 34 STA INC1LO 1188 08cb a6 24 LDA #$24 HI BYTE FOR TONE 1 1189 08cd b7 35 STA INC1HI 1190 08cf a6 45 LDA #$45 LOW BYTE FOR TONE 2, 2200 HZ (5.5006 x f) 1191 08d1 b7 36 STA INC2LO 1192 08d3 a6 2f LDA #$2F HI BYTE FOR TONE 2 1193 08d5 b7 37 STA INC2HI 1194 08d7 a6 06 LDA #$06 1195 08d9 b7 43 STA CTLO SAMPLE COUNT FOR REQUIRED TONE DURATION 1196 08db a6 03 LDA #$03 OF 65 MS : 1197 08dd b7 44 STA CTHI COUNT = TIME / 83.933 MICROSECS 1198 08df cd 04 07 JSR PLAY2 PLAY IT 1199 08e2 81 RTS 1200 1201 08e3 DIME EQU * 1202 08e3 a6 02 LDA #$02 SET UP BURST COUNTER 1203 08e5 b7 42 STA BURCNT 1204 08e7 a6 87 MORE1 LDA #$87 LOW BYTE FOR TONE 1, 1700 HZ (5.5006 x f) 1205 08e9 b7 34 STA INC1LO 1206 08eb a6 24 LDA #$24 HI BYTE FOR TONE 1 1207 08ed b7 35 STA INC1HI 1208 08ef a6 45 LDA #$45 LOW BYTE FOR TONE 2, 2200 HZ (5.5006 x f) 1209 08f1 b7 36 STA INC2LO 1210 08f3 a6 2f LDA #$2F HI BYTE FOR TONE 2 1211 08f5 b7 37 STA INC2HI 1212 08f7 a6 06 LDA #$06 1213 08f9 b7 43 STA CTLO SAMPLE COUNT FOR REQUIRED TONE DURATION 1214 08fb a6 03 LDA #$03 OF 65 MS : 1215 08fd b7 44 STA CTHI COUNT = TIME / 83.933 MICROSECS 1216 08ff cd 04 07 JSR PLAY2 PLAY IT 1217 0902 3a 42 DEC BURCNT PLAY AGAIN, IF NEEDED 1218 0904 26 e1 BNE MORE1 1219 0906 81 RTS 1220 1221 0907 QUART EQU * 1222 0907 a6 05 LDA #$05 SET UP BURST COUNTER 1223 0909 b7 42 STA BURCNT 1224 090b a6 87 MORE2 LDA #$87 LOW BYTE FOR TONE 1, 1700 HZ (5.5006 x f) 1225 090d b7 34 STA INC1LO 1226 090f a6 24 LDA #$24 HI BYTE FOR TONE 1 1227 0911 b7 35 STA INC1HI 1228 0913 a6 45 LDA #$45 LOW BYTE FOR TONE 2, 2200 HZ (5.5006 x f) 1229 0915 b7 36 STA INC2LO 1230 0917 a6 2f LDA #$2F HI BYTE FOR TONE 2 1231 0919 b7 37 STA INC2HI 1232 091b a6 dd LDA #$DD 1233 091d b7 43 STA CTLO SAMPLE COUNT FOR REQUIRED TONE DURATION 1234 091f a6 01 LDA #$01 OF 40 MS : 1235 0921 b7 44 STA CTHI COUNT = TIME / 83.933 MICROSECS 1236 0923 cd 04 07 JSR PLAY2 PLAY IT 1237 0926 3a 42 DEC BURCNT PLAY AGAIN, IF NEEDED 1238 0928 26 e1 BNE MORE2 1239 092a 81 RTS 1240 1241 *ROUTINE TO PLAY INTERCEPT SIT TONES 1242 092b a6 a2 SIT1 LDA #$A2 LOW BYTE FOR TONE 1, 913.8 HZ (5.5006 x f) 1243 092d b7 34 STA INC1LO 1244 092f a6 13 LDA #$13 HI BYTE FOR TONE 1 1245 0931 b7 35 STA INC1HI 1246 0933 a6 a2 LDA #$A2 LOW BYTE FOR TONE 2, 913.8 HZ (5.5006 x f) 1247 0935 b7 36 STA INC2LO 1248 0937 a6 13 LDA #$13 HI BYTE FOR TONE 2 1249 0939 b7 37 STA INC2HI 1250 093b a6 c1 LDA #$C1 1251 093d b7 43 STA CTLO SAMPLE COUNT FOR REQUIRED TONE DURATION 1252 093f a6 0c LDA #$0C OF 274 MS 1253 0941 b7 44 STA CTHI COUNT = TIME / 83.933 MICROSECS 1254 0943 cd 03 f9 JSR PLAY PLAY IT 1255 0946 a6 73 LDA #$73 LOW BYTE FOR TONE 1, 1370.6 HZ (5.5006 x f) 1256 0948 b7 34 STA INC1LO 1257 094a a6 1d LDA #$1D HI BYTE FOR TONE 1 1258 094c b7 35 STA INC1HI 1259 094e a6 73 LDA #$73 LOW BYTE FOR TONE 2, 1370.6 HZ (5.5006 x f) 1260 0950 b7 36 STA INC2LO 1261 0952 a6 1d LDA #$1D HI BYTE FOR TONE 2 1262 0954 b7 37 STA INC2HI 1263 0956 a6 c1 LDA #$C1 1264 0958 b7 43 STA CTLO SAMPLE COUNT FOR REQUIRED TONE DURATION 1265 095a a6 0c LDA #$0C OF 274 MS 1266 095c b7 44 STA CTHI COUNT = TIME / 83.933 MICROSECS 1267 095e cd 03 f9 JSR PLAY PLAY IT 1268 0961 a6 2d LDA #$2D LOW BYTE FOR TONE 1, 1776.7 HZ (5.5006 x f) 1269 0963 b7 34 STA INC1LO 1270 0965 a6 26 LDA #$26 HI BYTE FOR TONE 1 1271 0967 b7 35 STA INC1HI 1272 0969 a6 2d LDA #$2D LOW BYTE FOR TONE 2, 1776.7 HZ (5.5006 x f) 1273 096b b7 36 STA INC2LO 1274 096d a6 26 LDA #$26 HI BYTE FOR TONE 2 1275 096f b7 37 STA INC2HI 1276 0971 a6 af LDA #$AF 1277 0973 b7 43 STA CTLO SAMPLE COUNT FOR REQUIRED TONE DURATION 1278 0975 a6 11 LDA #$11 OF 380 MS (VALID KP RANGE IS 90 TO 120 MS) 1279 0977 b7 44 STA CTHI COUNT = TIME / 83.933 MICROSECS 1280 0979 cd 03 f9 JSR PLAY PLAY IT 1281 097c 81 RTS 1282 1283 *ROUTINE TO PLAY INTER-LATA NO CIRCUIT SIT TONES 1284 097d a6 a2 SIT2 LDA #$A2 LOW BYTE FOR TONE 1, 913.8 HZ (5.5006 x f) 1285 097f b7 34 STA INC1LO 1286 0981 a6 13 LDA #$13 HI BYTE FOR TONE 1 1287 0983 b7 35 STA INC1HI 1288 0985 a6 a2 LDA #$A2 LOW BYTE FOR TONE 2, 913.8 HZ (5.5006 x f) 1289 0987 b7 36 STA INC2LO 1290 0989 a6 13 LDA #$13 HI BYTE FOR TONE 2 1291 098b b7 37 STA INC2HI 1292 098d a6 af LDA #$AF 1293 098f b7 43 STA CTLO SAMPLE COUNT FOR REQUIRED TONE DURATION 1294 0991 a6 11 LDA #$11 OF 380 MS 1295 0993 b7 44 STA CTHI COUNT = TIME / 83.933 MICROSECS 1296 0995 cd 03 f9 JSR PLAY PLAY IT 1297 0998 a6 73 LDA #$73 LOW BYTE FOR TONE 1, 1370.6 HZ (5.5006 x f) 1298 099a b7 34 STA INC1LO 1299 099c a6 1d LDA #$1D HI BYTE FOR TONE 1 1300 099e b7 35 STA INC1HI 1301 09a0 a6 73 LDA #$73 LOW BYTE FOR TONE 2, 1370.6 HZ (5.5006 x f) 1302 09a2 b7 36 STA INC2LO 1303 09a4 a6 1d LDA #$1D HI BYTE FOR TONE 2 1304 09a6 b7 37 STA INC2HI 1305 09a8 a6 af LDA #$AF 1306 09aa b7 43 STA CTLO SAMPLE COUNT FOR REQUIRED TONE DURATION 1307 09ac a6 11 LDA #$11 OF 380 MS 1308 09ae b7 44 STA CTHI COUNT = TIME / 83.933 MICROSECS 1309 09b0 cd 03 f9 JSR PLAY PLAY IT 1310 09b3 a6 2d LDA #$2D LOW BYTE FOR TONE 1, 1776.7 HZ (5.5006 x f) 1311 09b5 b7 34 STA INC1LO 1312 09b7 a6 26 LDA #$26 HI BYTE FOR TONE 1 1313 09b9 b7 35 STA INC1HI 1314 09bb a6 2d LDA #$2D LOW BYTE FOR TONE 2, 1776.7 HZ (5.5006 x f) 1315 09bd b7 36 STA INC2LO 1316 09bf a6 26 LDA #$26 HI BYTE FOR TONE 2 1317 09c1 b7 37 STA INC2HI 1318 09c3 a6 af LDA #$AF 1319 09c5 b7 43 STA CTLO SAMPLE COUNT FOR REQUIRED TONE DURATION 1320 09c7 a6 11 LDA #$11 OF 380 MS (VALID KP RANGE IS 90 TO 120 MS) 1321 09c9 b7 44 STA CTHI COUNT = TIME / 83.933 MICROSECS 1322 09cb cd 03 f9 JSR PLAY PLAY IT 1323 09ce 81 RTS 1324 1325 *ROUTINE TO PLAY INTER-LATA REORDER SIT TONES 1326 09cf a6 2b SIT3 LDA #$2B LOW BYTE FOR TONE 1, 985.2 HZ (5.5006 x f) 1327 09d1 b7 34 STA INC1LO 1328 09d3 a6 15 LDA #$15 HI BYTE FOR TONE 1 1329 09d5 b7 35 STA INC1HI 1330 09d7 a6 2b LDA #$2B LOW BYTE FOR TONE 2, 985.2 HZ (5.5006 x f) 1331 09d9 b7 36 STA INC2LO 1332 09db a6 15 LDA #$15 HI BYTE FOR TONE 2 1333 09dd b7 37 STA INC2HI 1334 09df a6 c1 LDA #$C1 1335 09e1 b7 43 STA CTLO SAMPLE COUNT FOR REQUIRED TONE DURATION 1336 09e3 a6 0c LDA #$0C OF 274 MS 1337 09e5 b7 44 STA CTHI COUNT = TIME / 83.933 MICROSECS 1338 09e7 cd 03 f9 JSR PLAY PLAY IT 1339 09ea a6 73 LDA #$73 LOW BYTE FOR TONE 1, 1370.6 HZ (5.5006 x f) 1340 09ec b7 34 STA INC1LO 1341 09ee a6 1d LDA #$1D HI BYTE FOR TONE 1 1342 09f0 b7 35 STA INC1HI 1343 09f2 a6 73 LDA #$73 LOW BYTE FOR TONE 2, 1370.6 HZ (5.5006 x f) 1344 09f4 b7 36 STA INC2LO 1345 09f6 a6 1d LDA #$1D HI BYTE FOR TONE 2 1346 09f8 b7 37 STA INC2HI 1347 09fa a6 af LDA #$AF 1348 09fc b7 43 STA CTLO SAMPLE COUNT FOR REQUIRED TONE DURATION 1349 09fe a6 11 LDA #$11 OF 380 MS 1350 0a00 b7 44 STA CTHI COUNT = TIME / 83.933 MICROSECS 1351 0a02 cd 03 f9 JSR PLAY PLAY IT 1352 0a05 a6 2d LDA #$2D LOW BYTE FOR TONE 1, 1776.7 HZ (5.5006 x f) 1353 0a07 b7 34 STA INC1LO 1354 0a09 a6 26 LDA #$26 HI BYTE FOR TONE 1 1355 0a0b b7 35 STA INC1HI 1356 0a0d a6 2d LDA #$2D LOW BYTE FOR TONE 2, 1776.7 HZ (5.5006 x f) 1357 0a0f b7 36 STA INC2LO 1358 0a11 a6 26 LDA #$26 HI BYTE FOR TONE 2 1359 0a13 b7 37 STA INC2HI 1360 0a15 a6 af LDA #$AF 1361 0a17 b7 43 STA CTLO SAMPLE COUNT FOR REQUIRED TONE DURATION 1362 0a19 a6 11 LDA #$11 OF 380 MS (VALID KP RANGE IS 90 TO 120 MS) 1363 0a1b b7 44 STA CTHI COUNT = TIME / 83.933 MICROSECS 1364 0a1d cd 03 f9 JSR PLAY PLAY IT 1365 0a20 81 RTS 1366 1367 * Sine wave table: 256 elements, beginning at 2.5 volts, to 5 volts to 0, then 1368 0a21 SINTBL EQU * 1369 0a21 80 FCB 128 1370 0a22 83 FCB 131 1371 0a23 86 FCB 134 1372 0a24 89 FCB 137 1373 0a25 8c FCB 140 1374 0a26 90 FCB 144 1375 0a27 93 FCB 147 1376 0a28 96 FCB 150 1377 0a29 99 FCB 153 1378 0a2a 9c FCB 156 1379 0a2b 9f FCB 159 1380 0a2c a2 FCB 162 1381 0a2d a5 FCB 165 1382 0a2e a8 FCB 168 1383 0a2f ab FCB 171 1384 0a30 ae FCB 174 1385 0a31 b1 FCB 177 1386 0a32 b3 FCB 179 1387 0a33 b6 FCB 182 1388 0a34 b9 FCB 185 1389 0a35 bc FCB 188 1390 0a36 bf FCB 191 1391 0a37 c1 FCB 193 1392 0a38 c4 FCB 196 1393 0a39 c7 FCB 199 1394 0a3a c9 FCB 201 1395 0a3b cc FCB 204 1396 0a3c ce FCB 206 1397 0a3d d1 FCB 209 1398 0a3e d3 FCB 211 1399 0a3f d5 FCB 213 1400 0a40 d8 FCB 216 1401 0a41 da FCB 218 1402 0a42 dc FCB 220 1403 0a43 de FCB 222 1404 0a44 e0 FCB 224 1405 0a45 e2 FCB 226 1406 0a46 e4 FCB 228 1407 0a47 e6 FCB 230 1408 0a48 e8 FCB 232 1409 0a49 ea FCB 234 1410 0a4a eb FCB 235 1411 0a4b ed FCB 237 1412 0a4c ef FCB 239 1413 0a4d f0 FCB 240 1414 0a4e f1 FCB 241 1415 0a4f f3 FCB 243 1416 0a50 f4 FCB 244 1417 0a51 f5 FCB 245 1418 0a52 f6 FCB 246 1419 0a53 f8 FCB 248 1420 0a54 f9 FCB 249 1421 0a55 fa FCB 250 1422 0a56 fa FCB 250 1423 0a57 fb FCB 251 1424 0a58 fc FCB 252 1425 0a59 fd FCB 253 1426 0a5a fd FCB 253 1427 0a5b fe FCB 254 1428 0a5c fe FCB 254 1429 0a5d fe FCB 254 1430 0a5e ff FCB 255 1431 0a5f ff FCB 255 1432 0a60 ff FCB 255 1433 0a61 ff FCB 255 1434 0a62 ff FCB 255 1435 0a63 ff FCB 255 1436 0a64 ff FCB 255 1437 0a65 fe FCB 254 1438 0a66 fe FCB 254 1439 0a67 fe FCB 254 1440 0a68 fd FCB 253 1441 0a69 fd FCB 253 1442 0a6a fc FCB 252 1443 0a6b fb FCB 251 1444 0a6c fa FCB 250 1445 0a6d fa FCB 250 1446 0a6e f9 FCB 249 1447 0a6f f8 FCB 248 1448 0a70 f6 FCB 246 1449 0a71 f5 FCB 245 1450 0a72 f4 FCB 244 1451 0a73 f3 FCB 243 1452 0a74 f1 FCB 241 1453 0a75 f0 FCB 240 1454 0a76 ef FCB 239 1455 0a77 ed FCB 237 1456 0a78 eb FCB 235 1457 0a79 ea FCB 234 1458 0a7a e8 FCB 232 1459 0a7b e6 FCB 230 1460 0a7c e4 FCB 228 1461 0a7d e2 FCB 226 1462 0a7e e0 FCB 224 1463 0a7f de FCB 222 1464 0a80 dc FCB 220 1465 0a81 da FCB 218 1466 0a82 d8 FCB 216 1467 0a83 d5 FCB 213 1468 0a84 d3 FCB 211 1469 0a85 d1 FCB 209 1470 0a86 ce FCB 206 1471 0a87 cc FCB 204 1472 0a88 c9 FCB 201 1473 0a89 c7 FCB 199 1474 0a8a c4 FCB 196 1475 0a8b c1 FCB 193 1476 0a8c bf FCB 191 1477 0a8d bc FCB 188 1478 0a8e b9 FCB 185 1479 0a8f b6 FCB 182 1480 0a90 b3 FCB 179 1481 0a91 b1 FCB 177 1482 0a92 ae FCB 174 1483 0a93 ab FCB 171 1484 0a94 a8 FCB 168 1485 0a95 a5 FCB 165 1486 0a96 a2 FCB 162 1487 0a97 9f FCB 159 1488 0a98 9c FCB 156 1489 0a99 99 FCB 153 1490 0a9a 96 FCB 150 1491 0a9b 93 FCB 147 1492 0a9c 90 FCB 144 1493 0a9d 8c FCB 140 1494 0a9e 89 FCB 137 1495 0a9f 86 FCB 134 1496 0aa0 83 FCB 131 1497 0aa1 80 FCB 128 1498 0aa2 7d FCB 125 1499 0aa3 7a FCB 122 1500 0aa4 77 FCB 119 1501 0aa5 74 FCB 116 1502 0aa6 70 FCB 112 1503 0aa7 6d FCB 109 1504 0aa8 6a FCB 106 1505 0aa9 67 FCB 103 1506 0aaa 64 FCB 100 1507 0aab 61 FCB 97 1508 0aac 5e FCB 94 1509 0aad 5b FCB 91 1510 0aae 58 FCB 88 1511 0aaf 55 FCB 85 1512 0ab0 52 FCB 82 1513 0ab1 4f FCB 79 1514 0ab2 4d FCB 77 1515 0ab3 4a FCB 74 1516 0ab4 47 FCB 71 1517 0ab5 44 FCB 68 1518 0ab6 41 FCB 65 1519 0ab7 3f FCB 63 1520 0ab8 3c FCB 60 1521 0ab9 39 FCB 57 1522 0aba 37 FCB 55 1523 0abb 34 FCB 52 1524 0abc 32 FCB 50 1525 0abd 2f FCB 47 1526 0abe 2d FCB 45 1527 0abf 2b FCB 43 1528 0ac0 28 FCB 40 1529 0ac1 26 FCB 38 1530 0ac2 24 FCB 36 1531 0ac3 22 FCB 34 1532 0ac4 20 FCB 32 1533 0ac5 1e FCB 30 1534 0ac6 1c FCB 28 1535 0ac7 1a FCB 26 1536 0ac8 18 FCB 24 1537 0ac9 16 FCB 22 1538 0aca 15 FCB 21 1539 0acb 13 FCB 19 1540 0acc 11 FCB 17 1541 0acd 10 FCB 16 1542 0ace 0f FCB 15 1543 0acf 0d FCB 13 1544 0ad0 0c FCB 12 1545 0ad1 0b FCB 11 1546 0ad2 0a FCB 10 1547 0ad3 08 FCB 8 1548 0ad4 07 FCB 7 1549 0ad5 06 FCB 6 1550 0ad6 06 FCB 6 1551 0ad7 05 FCB 5 1552 0ad8 04 FCB 4 1553 0ad9 03 FCB 3 1554 0ada 03 FCB 3 1555 0adb 02 FCB 2 1556 0adc 02 FCB 2 1557 0add 02 FCB 2 1558 0ade 01 FCB 1 1559 0adf 01 FCB 1 1560 0ae0 01 FCB 1 1561 0ae1 01 FCB 1 1562 0ae2 01 FCB 1 1563 0ae3 01 FCB 1 1564 0ae4 01 FCB 1 1565 0ae5 02 FCB 2 1566 0ae6 02 FCB 2 1567 0ae7 02 FCB 2 1568 0ae8 03 FCB 3 1569 0ae9 03 FCB 3 1570 0aea 04 FCB 4 1571 0aeb 05 FCB 5 1572 0aec 06 FCB 6 1573 0aed 06 FCB 6 1574 0aee 07 FCB 7 1575 0aef 08 FCB 8 1576 0af0 0a FCB 10 1577 0af1 0b FCB 11 1578 0af2 0c FCB 12 1579 0af3 0d FCB 13 1580 0af4 0f FCB 15 1581 0af5 10 FCB 16 1582 0af6 11 FCB 17 1583 0af7 13 FCB 19 1584 0af8 15 FCB 21 1585 0af9 16 FCB 22 1586 0afa 18 FCB 24 1587 0afb 1a FCB 26 1588 0afc 1c FCB 28 1589 0afd 1e FCB 30 1590 0afe 20 FCB 32 1591 0aff 22 FCB 34 1592 0b00 24 FCB 36 1593 0b01 26 FCB 38 1594 0b02 28 FCB 40 1595 0b03 2b FCB 43 1596 0b04 2d FCB 45 1597 0b05 2f FCB 47 1598 0b06 32 FCB 50 1599 0b07 34 FCB 52 1600 0b08 37 FCB 55 1601 0b09 39 FCB 57 1602 0b0a 3c FCB 60 1603 0b0b 3f FCB 63 1604 0b0c 41 FCB 65 1605 0b0d 44 FCB 68 1606 0b0e 47 FCB 71 1607 0b0f 4a FCB 74 1608 0b10 4d FCB 77 1609 0b11 4f FCB 79 1610 0b12 52 FCB 82 1611 0b13 55 FCB 85 1612 0b14 58 FCB 88 1613 0b15 5b FCB 91 1614 0b16 5e FCB 94 1615 0b17 61 FCB 97 1616 0b18 64 FCB 100 1617 0b19 67 FCB 103 1618 0b1a 6a FCB 106 1619 0b1b 6d FCB 109 1620 0b1c 70 FCB 112 1621 0b1d 74 FCB 116 1622 0b1e 77 FCB 119 1623 0b1f 7a FCB 122 1624 0b20 7d FCB 125 1625 Number of errors 0