Classic Computer Magazine Archive PROGRAM LISTING: 83-10/MAXMIND.ASM


0 ;     MAXTER MIND
20 ;         BY
30 ;      BOB POLIN
40 ;
50 ;    ADAPTED FROM
60 ; SYNASSEMBLER VERSION
70 ;**********************
80 ;*G7810 TO RUN PROGRAM*
90 ;**********************
0100  .OPT NOLIST
0110  *=$7800
0120 SC=$7000          SCREEN
0130 PM=$7000          PLAYER-MISSILE
0140 P0=PM+$400        PLAYER0
0150 P1=PM+$500
0160 P2=PM+$600
0170 P3=PM+$700
0180 MISL=PM+$300      MISSILES
0190 PMBASE=$D407
0200 NMIEN=$D40E
0210 CHBASE=$D409
0220 WSYNC=$D40A
0230 RANDOM=$D20A
0240 HPOP0=$D000
0250 HPOSP1=$D001
0260 HPOSP2=$D002
0270 HPOSP3=$D003
0280 HPOSM0=$D004
0290 SIZEP0=$D008
0300 SIZEP2=$D00A
0310 SIZEM=$D00C
0320 COLPM0=$D012
0330 COLPM2=$D014
0340 COLPM3=$D015
0350 COLPF0=$D016
0360 COLPF1=$D017
0370 COLPF2=$D018
0380 COLPF3=$D019
0390 COLBK=$D01A
0400 GRACTL=$D01D
0410 CONSOL=$D01F
0420 RTCLOCK=$14
0430 VDSLST=$200
0440 SDMCTL=$22F
0450 SDLSTL=$230
0460 STICK0=$278
0470 STRIG0=$284
0480 COLOR0=$2C4
0490 COLOR4=$2C8
0500 PCOLR0=$2C0
0510 PCOLR1=$2C1
0520 PCOLR2=$2C2
0530 PCOLR3=$2C3
0540 CH=$2FC
0550 POS=$B4           SCREEN POSITION
0560 ;                 OF CURRENT ENTRY
0570 CSRPOS=$600       CURSOR POSITION
0580 COUNTER=$601
0590 LINE1=$602
0600 LINE2=$607
0610 LINE3=$60C
0620 LINE4=$611
0630 LINE5=$616
0640 LINE6=$61B
0650 LINE7=$620
0660 LINE8=$625
0670 LINE9=$62A
0680 LINE10=$62F
0690 LINE11=$634
0700 ANSPOS=$639       ANSWER POSITION
0710 ;                 ON THE SCREEN
0720 TRIGV=$63E        TRIGGER VALUE
0730 NUMPCK=$63F       NUMBER OF
0740 ;                 PICK (0-4)
0750 ANSWER=$643
0760 GRNBAR=$648       NO. OF GRN BARS
0770 REDBAR=$649       NO. OF RED BARS
0780 VPOSBAR=$64A      VERTICAL POS OF
0790 ;                 RED OR GRN BAR
0800 STRTPRS=$FE       NON 0=START
0810 ;                 BUTTON PRESSED
0820 TEMP1=$B0         TEMPORARY
0830 TEMP2=$B1         CALCULATION
0840 TEMP3=$B2         REGISTERS
0850 CHSET .BYTE 0,0,0,0,0,0,0,0
0860  .BYTE $7C,$FE,$BA,$EE,$BA,$C6,$7C,0
0870  LDA #0
0880  STA STRTPRS
0890 START LDA #0
0900  STA SDMCTL       TURN OFF DMA
0910  LDX #$7F
0920 E STA $600,X      CLEAR 1/2 OF
0930  STA SC+300,X     PAGE 6 & PART
0940  DEX              OF SCREEN
0950  BPL E
0960  LDX #MISL&255    CLEAR PLAYER-
0970  STX TEMP1        MISSILE MEMORY
0980  LDX #MISL/256
0990  STX TEMP2
1000  LDX #5
1010  LDY #0
1020 C STA (TEMP1),Y
1030  DEY
1040  BNE C
1050  INC TEMP2
1060  DEX
1070  BNE C
1080  STA COLOR4       BLACK BKGD
1090  LDA #$2A         YELLOW
1100  STA PCOLR3
1110  LDA #$46         RED
1120  STA PCOLR0
1130  LDA #$C4         GREEN
1140  STA PCOLR1
1150  LDA #$CA         LIGHT GREEN
1160  STA PCOLR2
1170  LDA #DL&255      STORE ADDRESS
1180  STA SDLSTL       OF DISPLAY LIST
1190  LDA #DL/256
1200  STA SDLSTL+1
1210  LDA #DLIR1&255   STORE ADDRESS
1220  STA VDSLST       OF DISPLAY LIST
1230  LDA #DLIR1/256   INTERRUPT
1240  STA VDSLST+1     ROUTINE #1
1250  LDA #166
1260  STA VPOSBAR
1270  LDA #192         ENABLE DLI
1280  STA NMIEN
1290  LDA #3           ENABLE PM
1300  STA GRACTL       GRAPHICS
1310  STA SIZEM        QUAD SIZED MISL
1320  LDA #62          ENABLE DMA &
1330  STA SDMCTL       PM GRAPHICS
1340  LDA #1           DRAW FACE
1350  STA SC+405       WITH COLOR 0
1360  STA SC+385       CURSOR
1370  STA COUNTER      INITIALIZE CNTR
1380  LDA #$41         COLOR 1
1390  STA SC+406
1400  LDA #$81         COLOR 2
1410  STA SC+407
1420  LDA #$C1         COLOR 3
1430  STA SC+408
1440  LDA #13          DRAW 12 LINES
1450  STA TEMP3        OF FACES
1460  LDA #SC+100&255  BLACK AT THIS
1470  STA TEMP1        POINT
1480  LDA #SC+100/256
1490  STA TEMP2        4 ON EACH LINE
1500 G DEC TEMP3       USING COLORS
1510  BEQ F            0 TO 3
1520  LDY #8
1530  LDX #3
1540 H  LDA IM,X
1550  STA (TEMP1),Y
1560  DEY
1570  DEY
1580  DEX
1590  BPL H
1600  LDA TEMP1
1610  CLC
1620  ADC #20          NEXT LINE
1630  STA TEMP1
1640  BCC G
1650  INC TEMP2
1660  BNE G
1670 F LDX #10         PRINT
1680 I LDA MXMND,X     "MAXTER MIND"
1690  STA SC+44,X      ON TOP OF
1700  DEX              SCREEN
1710  BPL I
1720  LDA #12          DRAW 1 FACE
1730  STA TEMP3        ON EACH OF 12
1740  LDY #171         LINES WITH
1750 K LDX #7          PLAYER 3
1760 J LDA PLIM,X
1770  STA P3,Y
1780  DEY
1790  DEX
1800  BPL J
1810  DEC TEMP3
1820  BNE K
1830  LDY #208
1840  LDX #7           DRAW 4
1850 D LDA PLIM,X      FACES
1860  STA P0,Y         AT BOTTOM
1870  STA P1,Y         OF SCREEN
1880  STA P2,Y
1890  STA P3,Y
1900  DEY
1910  DEX
1920  BPL D
1930  LDA #PM/256
1940  STA PMBASE
1950  LDA #128
1960  STA HPOSP3
1970  LDA #136
1980  STA HPOSP1
1990  LDA #144
2000  STA HPOSP2
2010  STA HPOSM0
2020  LDA #1
2030  STA TRIGV
2040  LDA #$FF
2050  STA POS
2060  LDA #4           PICK ANSWER
2070  STA TEMP1
2080 L LDY #4
2090  LDA RANDOM       PICK COLORS
2100  AND #7
2110  TAX
2120  LDA COLOR,X
2130 M CMP ANSWER,Y
2140  BEQ L            COLOR EXISTS-
2150 ;                 PICK AGAIN
2160  DEY
2170  BPL M
2180  LDX TEMP1        COLOR DOES NOT
2190  STA ANSWER,X     EXIST-STORE IT
2200  DEC TEMP1
2210  BPL L            PICK NEXT COLOR
2220  JSR TIMER        DELAY
2230  LDA STRTPRS      START GAME IF
2240  BNE SRT          <> 0
2250 N JSR CKSTRT
2260  LDA RTCLOCK      FLASH PURPLE
2270  AND #$F          "MAXTER MIND"
2280  ORA #$60
2290  STA COLOR0
2300  BNE N
2310 SRT JSR JOYST     SUBROUTINE LOOP
2320  JSR CKSTRT       THAT PLAYS THE
2330  JSR MOVE         GAME
2340  JSR CLEAR
2350  JSR OPT
2360  JSR TIMER
2370  JMP SRT
2380 CALC LDA #0       CALCULATES THE
2390  STA GRNBAR       NUMBER OF
2400  STA REDBAR       CORRECT CHOICES
2410  LDX #4           ON EACH LINE
2420  LDY POS
2430  STY TEMP1        CHECK HOW MANY
2440 O LDY TEMP1       GRN BARS
2450  LDA LINE1,Y
2460  CMP ANSWER,X
2470  BNE P
2480  INC GRNBAR
2490 P DEC TEMP1
2500  DEX
2510  BPL O
2520  LDA #30          DELAY BEFORE
2530  STA TEMP1        PRINTING RESULT
2540 Q JSR TIMER
2550  DEC TEMP1
2560  BNE Q
2570  LDY VPOSBAR
2580  LDA GRNBAR       PRINT GRN BARS
2590  BEQ R            FOR CORRECT
2600  CMP #1           COLOR & POS
2610  BEQ S
2620  CMP #2
2630  BEQ T
2640  CMP #3
2650  BEQ U
2660  CMP #4
2670  BEQ V
2680  LDX #4           GRNBAR=5
2690 W LDA ANSWER,X    PRINT CORRECT
2700  STA ANSPOS,X     ANSWER
2710  DEX
2720  BPL W
2730  INX              BLACKEN
2740  STX COLOR0       "MAXTER MIND"
2750 X JSR CKSTRT
2760  LDA RTCLOCK      FLASH TOP OF
2770  STA COLOR4       SCREEN
2780  JMP X
2790 S LDA #$40        1 GRN BAR FOR
2800  BNE Y            EACH CHOICE
2810 T LDA #$50        CORRECT IN BOTH
2820  BNE Y            COLOR AND
2830 U LDA #$54        POSITION
2840  BNE Y
2850 V LDA #$55
2860 Y STA P2+1,Y
2870  STA P2+2,Y
2880  STA P2+3,Y
2890 R LDA #4          CHECK HOW MANY
2900  STA TEMP2        RED BARS
2910  LDY POS
2920 Z LDX #4
2930 AA LDA LINE1,Y
2940  CMP ANSWER,X
2950  BNE AB
2960  INC REDBAR
2970 AB DEX
2980  BPL AA
2990  DEY
3000  DEC TEMP2
3010  BPL Z
3020  LDY VPOSBAR
3030  LDA REDBAR
3040  SEC
3050  SBC GRNBAR
3060  BEQ AC
3070  CMP #1           1 RED BAR FOR
3080  BEQ AD           EACH CHOICE
3090  CMP #2           CORRECT IN
3100  BEQ AE           COLOR BUT
3110  CMP #3           INCORRECT IN
3120  BEQ AF           POSITION
3130  CMP #4
3140  BEQ BA
3150  LDA #1           USE MISL0 IF
3160  STA MISL+1,Y     5TH RED BAR
3170  STA MISL+2,Y     NEEDED
3180  STA MISL+3,Y
3190 BA LDA #$55
3200 AG STA P0+1,Y
3210  STA P0+2,Y
3220  STA P0+3,Y
3230 AC RTS
3240 AD LDA #1
3250  BNE AG
3260 AE LDA #5
3270  BNE AG
3280 AF LDA #$15
3290  BNE AG
3300 OPT LDA CONSOL    CHECK IF OPTION
3310  CMP #3           PRESSED=GIVE
3320  BEQ LANE         UP
3330  RTS
3340 LANE LDX #4
3350  STX CONSOL       CLICK SPEAKER &
3360 AH LDA ANSWER,X   PRINT ANSWER
3370  STA ANSPOS,X
3380  DEX
3390  BPL AH
3400 AI JSR CKSTRT
3410  JMP AI
3420 DLIR1 PHA
3430  TXA
3440  PHA
3450  LDA #3           QUAD SIZE
3460  STA SIZEP0
3470  STA SIZEP2
3480  LDA #$62         PURPLE
3490  STA WSYNC        WAIT TILL HORIZ
3500 ;                 BLANK BEFORE
3510 ;                 CHANGING COLOR
3520  STA COLBK
3530  LDA #152
3540  STA HPOP0
3550  LDA #CHSET/256   CHARACTER SET
3560  STA CHBASE
3570  LDA #DLIR2&255
3580  LDX #DLIR2/256
3590 RESTORE STA VDSLST
3600  STX VDSLST+1     STORE ADDRESS
3610  PLA              OF NEXT DLIR &
3620  TAX              RESTORE
3630  PLA              REGISTERS
3640  RTI
3650 DLIR2 PHA
3660  TXA
3670  PHA
3680  LDA #0           BLACK
3690  STA WSYNC
3700  STA COLBK
3710  LDX #4
3720 AJ LDA ANSPOS,X   ANSPOS TO
3730  STA COLPM3,X     ANSPOS+4 IS
3740  DEX              BLACK (0) TILL
3750  BPL AJ           ANSWER PRINTED
3760  LDA #DLIR3&255
3770  LDX #DLIR3/256
3780  BNE RESTORE
3790 DLIR3 PHA
3800  TXA
3810  PHA
3820  LDX #4
3830 AK LDA LINE11,X   LINE11 TO LINE1
3840  STA COLPM3,X     ARE ALL BLACK
3850  DEX              TILL CHOICES
3860  BPL AK           ARE ENTERED
3870  LDA #DLIR4&255   ON THEM
3880  LDX #DLIR4/256
3890  JMP RESTORE
3900 DLIR4 PHA
3910  TXA
3920  PHA
3930  LDX #4
3940 AL LDA LINE10,X
3950  STA COLPM3,X
3960  DEX
3970  BPL AL
3980  LDA #DLIR5&255
3990  LDX #DLIR5/256
4000  JMP RESTORE
4010 DLIR5 PHA
4020  TXA
4030  PHA
4040  LDX #4
4050 AM LDA LINE9,X
4060  STA COLPM3,X
4070  DEX
4080  BPL AM
4090  LDA #DLIR6&255
4100  LDX #DLIR6/256
4110  JMP RESTORE
4120 DLIR6 PHA
4130  TXA
4140  PHA
4150  LDX #4
4160 AN LDA LINE8,X
4170  STA COLPM3,X
4180  DEX
4190  BPL AN
4200  LDA #DLIR7&255
4210  LDX #DLIR7/256
4220  JMP RESTORE
4230 DLIR7 PHA
4240  TXA
4250  PHA
4260  LDX #4
4270 AO LDA LINE7,X
4280  STA COLPM3,X
4290  DEX
4300  BPL AO
4310  LDA #DLIR8&255
4320  LDX #DLIR8/256
4330  JMP RESTORE
4340 DLIR8 PHA
4350  TXA
4360  PHA
4370  LDX #4
4380 AP LDA LINE6,X
4390  STA COLPM3,X
4400  DEX
4410  BPL AP
4420  LDA #DLIR9&255
4430  LDX #DLIR9/256
4440  JMP RESTORE
4450 DLIR9 PHA
4460  TXA
4470  PHA
4480  LDX #4
4490 AQ LDA LINE5,X
4500  STA COLPM3,X
4510  DEX
4520  BPL AQ
4530  LDA #DLIR10&255
4540  LDX #DLIR10/256
4550  JMP RESTORE
4560 DLIR10 PHA
4570  TXA
4580  PHA
4590  LDX #4
4600 AR LDA LINE4,X
4610  STA COLPM3,X
4620  DEX
4630  BPL AR
4640  LDA #DLIR11&255
4650  LDX #DLIR11/256
4660  JMP RESTORE
4670 DLIR11 PHA
4680  TXA
4690  PHA
4700  LDX #4
4710 AS LDA LINE3,X
4720  STA COLPM3,X
4730  DEX
4740  BPL AS
4750  LDA #DLIR12&255
4760  LDX #DLIR12/256
4770  JMP RESTORE
4780 DLIR12 PHA
4790  TXA
4800  PHA
4810  LDX #4
4820 AT LDA LINE2,X
4830  STA COLPM3,X
4840  DEX
4850  BPL AT
4860  LDA #DLIR13&255
4870  LDX #DLIR13/256
4880  JMP RESTORE
4890 DLIR13 PHA
4900  TXA
4910  PHA
4920  LDX #4
4930 AU LDA LINE1,X
4940  STA COLPM3,X
4950  DEX
4960  BPL AU
4970  LDA #DLIR14&255
4980  LDX #DLIR14/256
4990  JMP RESTORE
5000 DLIR14 PHA
5010  TXA
5020  PHA
5030  LDA #$62         PURPLE
5040  STA WSYNC
5050  STA COLBK
5060  LDA #$32         RED
5070  STA COLPM0
5080  LDA #$94         BLUE
5090  STA COLPM2
5100  LDA #DLIR15&255
5110  LDX #DLIR15/256
5120  JMP RESTORE
5130 DLIR15 PHA
5140  TXA
5150  PHA
5160  LDA #0
5170  LDX #120
5180  STX HPOP0
5190  STA SIZEP0       NORMAL SIZE
5200  STA SIZEP2
5210  STA WSYNC
5220  STA COLBK
5230  LDA #$66         PURPLE (CURSOR)
5240  STA COLPF0
5250  LDA #$2A         YELLOW
5260  STA COLPM3
5270  LDA #DLIR16&255
5280  LDX #DLIR16/256
5290  JMP RESTORE
5300 DLIR16 PHA
5310  TXA
5320  PHA
5330  LDA #$E          WHITE
5340  LDX #4           GRAY
5350  STA WSYNC
5360  STA COLPF0
5370  STX COLPF1
5380  LDA #$12         BROWN
5390  STA COLPF2
5400  LDA #$36         RED
5410  STA COLPF3
5420  LDA #DLIR1&255
5430  LDX #DLIR1/256
5440  JMP RESTORE
5450 CKERR LDA #5      CHECK IF 1
5460  STA TEMP3        COLOR USED
5470  LDY POS          TWICE ON THE
5480 AV LDA #0         SAME LINE BY
5490  STA TEMP1        COMPARING EACH
5500  LDA #5           COLOR WITH ALL
5510  STA TEMP2        COLORS ON ITS
5520  LDX POS          LINE
5530 AW LDA LINE1,Y
5540  CMP LINE1,X
5550  BNE AX
5560  INC TEMP1
5570 AX DEX
5580  DEC TEMP2
5590  BNE AW
5600  LDA TEMP1        SHOULD=1
5610  CMP #2           BECAUSE SAME
5620  BCS ERR          COLOR AS ITSELF
5630  DEY
5640  DEC TEMP3
5650  BNE AV
5660  RTS
5670 ERR LDA #4        DISALLOW ENTRY
5680  STA NUMPCK       BY BACKSPACING
5690  STA CONSOL       AND CLICKING
5700  LDX POS          SPEAKER
5710  LDA #0
5720  STA LINE1,X
5730  DEC POS
5740  PLA
5750  PLA
5760  RTS
5770 CKSTRT LDA CONSOL CHECK START
5780  CMP #6           BUTTON
5790  BEQ AY
5800  RTS
5810 AY INC STRTPRS    START PRESSED
5820  LDA #$6A         PURPLE
5830  STA COLOR0       "MAX MIND"
5840  PLA
5850  PLA
5860  JMP START
5870 MOVE LDA STRIG0
5880  CMP TRIGV        BRANCH IF
5890  BNE AZ           STATUS CHANGE
5900 BB RTS            IN FIRE BUTTON
5910 AZ STA TRIGV
5920  CMP #1           NOT PRESSED
5930  BEQ BB
5940  INC NUMPCK
5950  LDA NUMPCK
5960  CMP #5
5970  BNE BC
5980  LDA #0           COMPLETE LINE
5990  STA NUMPCK       ENTERED
6000 BC INC POS
6010  LDX POS
6020  LDY CSRPOS
6030  LDA COLOR,Y
6040  STA LINE1,X
6050  LDA NUMPCK
6060  BNE BB
6070  JSR CKERR
6080  JSR CALC
6090  LDA VPOSBAR      UPDATE VERTICAL
6100  SEC              POS FOR NEW
6110  SBC #8           LINE
6120  STA VPOSBAR
6130  LDA POS
6140  CMP #$36         TOTAL NUMBER OF
6150  BCS BD           PICKS ALLOWED
6160  RTS
6170 BD PLA            LOSE-ALL PICKS
6180  PLA              USED UP
6190  JMP LANE
6200 CLEAR LDA CH      CHECK IF SPACE
6210  CMP #33          BAR PRESSED
6220  BEQ BE
6230 BF RTS
6240 BE LDA #255
6250  STA CH
6260  LDX POS
6270  LDA NUMPCK       CANNOT DELETE
6280  BEQ BF           IF NEW LINE
6290  DEC NUMPCK
6300  DEC POS
6310  LDA #0
6320  STA LINE1,X
6330  RTS
6340 JOYST DEC COUNTER CAN MOVE CURSOR
6350  BEQ BG           ONCE EVERY
6360 BH RTS            12/60 SECOND
6370 BG LDA #12
6380  STA COUNTER
6390  STA $4D          NO ATTRACT MODE
6400  LDA STICK0
6410  CMP #11          LEFT
6420  BEQ BI
6430  CMP #7           RIGHT
6440  BNE BH
6450  INC CSRPOS       0-7 ALLOWED
6460  LDX CSRPOS
6470  CPX #8
6480  BNE BJ
6490  DEX
6500  LDA #0
6510  STA SC+385,X
6520  LDX #0           MOVE CORSOR TO
6530  STX CSRPOS       LEFTMOST POS
6540 BK LDA #1
6550  STA SC+385,X
6560  RTS
6570 BJ DEX            CLEAR PREVIOUS
6580  LDA #0           CURSOR POSITION
6590  STA SC+385,X
6600  INX              MOVE CSR RIGHT
6610  BNE BK           1 POSITION
6620 BI DEC CSRPOS
6630  BPL BL
6640  LDX #0           MOVE CURSOR TO
6650  LDA #0           RIGHTMOST POS
6660  STA SC+385,X
6670  LDX #7
6680  STX CSRPOS
6690  BNE BK
6700 BL LDX CSRPOS
6710  INX              CLEAR PREVIOUS
6720  LDA #0           CURSOR POSITION
6730  STA SC+385,X
6740  DEX
6750  BPL BK
6760 TIMER LDA RTCLOCK DO NOTHING
6770 BM CMP RTCLOCK    FOR 1/60
6780  BEQ BM           SECOND
6790  RTS
6800 IM .BYTE $C1,$81,$41,1
6810 ;CHARACTER CODES FOR FACE
6820 MXMND .BYTE $2D,$21,$38,$34,$25,$32,0,$2D,$29,$2E,$24
6830 ;CHAR CODES FOR "MXTR MND"
6840 PLIM .BYTE $7C,$FE,$BA,$EE,$BA,$C6,$7C,0
6850 ;BIT MAP OF FACE
6860 COLOR .BYTE $F,4,$12,$36,$32,$2A,$C4,$94
6870 ;COLORS AVAIBLE
6880 DL .BYTE $70,$70,$70,$46
6890 ;DISPLAY LIST
6900  .WORD SC
6910  .BYTE 6,6,6,$90,$90,6,$86,$86
6920  .BYTE $86,$86,$86,$86,$86,$86,$86,$86
6930  .BYTE $86,6,6,$90,$90,6,6,$80
6940  .BYTE 6,$41
6950  .WORD DL

Back to previous page