First commit
[asteroids.git] / A35131.1D
1         .TITLE ASTNMI-ASTEROID NMI AND MOOLAH\r
2         .CSECT\r
3         .RADIX 16\r
4 ;*******************************\r
5 ;*\r
6 ;* THIS PROGRAM RESIDES IN THE UPPER 1K OF PROGRAM SPACE\r
7 ;* ITPERFORMS POWER ON RESET PROCESSING\r
8 ;* AS WELL AS COIN PROCESSING. SEE ASTROD.MAC FOR HARDWARE\r
9 ;* CONFIGURATION\r
10 ;*\r
11 ;*******************************\r
12         .SBTTL ****************************\r
13         .SBTTL *\r
14         .SBTTL *PROGRAMMER: ED LOGG\r
15         .SBTTL *\r
16         .SBTTL ****************************\r
17 ;\r
18 ;ENTRY POINTS\r
19 ;\r
20         .GLOBL NMI\r
21         \r
22 ;\r
23 ;ZERO PAGE DECLARATIONS\r
24 ;\r
25         .GLOBL SYNC,LOUT1,SND3,FRAME\r
26         .GLOBL TEMP1,TEMP2\r
27         \r
28         \r
29         .INCLUDE ASTDEC\r
30         \r
31         \r
32 ;\r
33 ;COIN ROUTINE DECLARATIONS\r
34 ;\r
35 OFFSET  =1                      ;OFFSET BY 1 FOR COINS\r
36 CNTINT  =0                      ;WE COUNT INTERRUPTS IN $INTCT\r
37 INCLUDE =1                      ;PENNY IS INCLUDED\r
38 COIN    =1                      ;COINS ARE HIGH TRUE\r
39 EMCTRS  =3                      ;3 COIN COUNTERS\r
40         \r
41 CKSUM6: .BYTE 0C6               ;CHECKSUM FOR 7800-7BFF\r
42 \f       .INCLUDE COIN65\r
43 \f       .SBTTL NMI - INTERRUPT ROUTINE\r
44 ;NMI-NMI INTERRUPT EVERY 4 MS.\r
45 ;\r
46 NMI:    PHA                     ;SAVE MACHINE\r
47         TYA\r
48         PHA\r
49         TXA\r
50         PHA\r
51         CLD\r
52         LDA A,1FF\r
53         ORA A,1D0\r
54 2$:     BNE 2$                  ;OOPS - STACK ERROR\r
55         INC Z,$INTCT            ;ANOTHER INTERRUPT\r
56         LDA Z,$INTCT\r
57         AND I,3                 ;16 MS\r
58         BNE 10$\r
59         INC Z,SYNC              ;MAIN LINE SYNC UP (16 MS)\r
60         LDA Z,SYNC\r
61         CMP I,04\r
62 5$:     BCS 5$                  ;PROGRAM WHERE ARE YOU\r
63 \r
64 10$:    JSR MOOLAH              ;CHECK FOR COINS\r
65         LDA Z,LOUT1\r
66         AND I,0C7               ;CLEAR OLD COIN COUNTER BIT\r
67         BIT $CCTIM              ;CHECK COIN COUNTERS\r
68         BPL 12$                 ;NOT ON\r
69         ORA I,08\r
70 12$:    BIT $CCTIM+1\r
71         BPL 13$                 ;NOT ON\r
72         ORA I,10\r
73 13$:    BIT $CCTIM+2\r
74         BPL 15$                 ;NOT ON\r
75         ORA I,20\r
76 15$:    STA Z,LOUT1\r
77         STA A,OUT1\r
78         LDA $LMTIM\r
79         BEQ 16$                 ;TURN TONE ON IF SLAM DETECTED\r
80         LDA I,80                ;TURN ON TONE\r
81         BNE 20$                 ;ALWAYS\r
82 \r
83 16$:    LDA Z,SND3\r
84         BEQ 20$                 ;IF NO TONE SOUND\r
85         LDA FRAME\r
86         ROR\r
87         BCC 18$                 ;EVERY OTHER FRAME\r
88         DEC Z,SND3\r
89 18$:    ROR\r
90         ROR\r
91         ROR                     ;MOVE D2 TO D7\r
92 20$:    STA A,TONE              ;OUTPUT TONE\r
93         PLA\r
94         TAX\r
95         PLA\r
96         TAY\r
97         PLA\r
98         RTI\r
99 \r
100         .REPT 0                 ;REPT 0 FOR .SAV FILES\r
101         .VCTRS 0F7C3,NMI\r
102         .ENDR\r
103 \r
104         .END\r
105 \r
106 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0