20 *= $600 30 PLA PULL OFF DUMMY ARG COUNT 40 LDA #$08 50 STA $D01F INIT SWITCHES 60 M1 LDA $D01F GET VALUE 70 AND #$01 ?START PRESSED 80 BNE M1 NOT YES 90 LDY #$FF DELAY 0100 M2 LDX #$FF SOME 0110 JSR DEL GO LOOP 0120 DEY 0130 BNE M2 0140 LDA #$08 RESET 0150 STA $D01F START SWITCH 0160 LDX 208 GET PARM 0170 CPX #0 ?PLAYBACK 0180 BNE NP NO 0190 JMP PB GO PLAY BACK SOUND 0200 NP LDA #0 0210 STA $D400 KILL DMA 0220 STA $D40E KILL VBI 0230 MD STA $D40A WSYNC 0240 STA $D40A WSYNC 0250 DONE LDX 207 0260 JSR DEL GO WAIT IF NEED BE 0270 LDA $D204 GET INPUT BYTE 0280 GO LDX #$13 0290 STX $D20F TURN OFF FAST SCAN 0300 LDX #$17 0310 STX $D40A WSYNC 0320 STX $D20F SAY FAST POT SCAN 0330 STX $D20B START SCAN 0340 LDX FLAG 0350 CPX #0 ?LEFT HALF OF BYTE 0360 BNE RT NO 0370 AND #$F0 0380 STA BYTE SAVE IT 0390 ROR A 0400 ROR A 0410 ROR A 0420 ROR A 0430 AND #$0F 0440 ORA #$10 SAY USE 4 BIT D/A 0450 STA $D201 ECHO TO SPEAKER 0460 INC FLAG SAY RIGHT NEXT 0470 JMP MD 0480 RT ROR A 0490 ROR A 0500 ROR A 0510 ROR A 0520 AND #$0F 0530 ORA #$10 SAY USE 4 BIT D/A 0540 STA $D201 SAY SOMETHING 0550 AND #$0F REMOVE TOP 4 BITS 0560 ORA BYTE ADD IN LEFT NIBBLE 0570 DEC FLAG SAY LEFT NEXT 0580 LDY #0 0590 STA (205),Y SAVE TO BYTE 0600 LDA $D01F 0610 AND #$01 ?START KEY 0620 BEQ FINI YES 0630 D3 INC 205 INCREMENT 0640 BNE MD BUFFER 0650 INC 206 AREA 0660 LDX 206 POINTER 0670 CPX 209 ?END OF MEMORY 0680 BNE MD NO CONTINUE 0690 JMP FINI GO FINISH THINGS 0700 DEL DEX 0710 BNE DEL 0720 RTS 0730 FINI LDA 208 ?TALK A LOT 0740 CMP #2 ?HUH 0750 BNE FINI1 NO, JUST RETURN 0760 LDA #0 RESET 0770 STA 205 BUFFER 0780 LDA #64 START 0790 STA 206 POINTERS 0800 JMP NP AND DO IT AGAIN 0810 FINI1 LDA #$40 0820 STA $D40E RESTART VBI'S 0830 LDA #$22 AND SCREEN DMA 0840 STA $D400 0850 RTS 0860 PB LDA #0 0870 STA $D40E KILL VBI 0880 STA $D400 KILL DMA 0890 PB1 LDX 207 GET DELAY COUNT 0900 JSR DEL 0910 LDY #0 0920 LDA (203),Y GET SOME DATA 0930 TAX 0940 ROR A 0950 ROR A 0960 ROR A 0970 ROR A 0980 AND #$0F GET LEFT NIBBLE 0990 ORA #$10 SAY USE D/A 1000 STA $D201 STORE THE VALUE 1010 TXA 1020 AND #$0F 1030 ORA #$10 1040 CLC 1050 CLC 1060 CLC 1070 CLC 1080 LDX 207 GET DELAY VALUE 1090 JSR DEL 1100 STA $D201 MAKE SOME NOISE 1110 D4 INC 203 INCREMENT 1120 BNE PB 1130 INC 204 BUFFER 1140 LDX 204 1150 CPX 206 POINTERA 1160 BNE PB1 1170 JMP FINI 1180 BYTE .BYTE 0 1190 FLAG .BYTE 0
Back to previous page