606 lines
18 KiB
NASM
Executable File
606 lines
18 KiB
NASM
Executable File
OPT NOL
|
|
LIB RRFRED
|
|
OPT LIS
|
|
|
|
ORG TSCORG PLACE TO RUN FROM
|
|
JMP CKHS CHECK HIGH SCORES (POWER UP)
|
|
JMP ENDGAM END OF GAME HIGH SCORE PROCESSING
|
|
JMP GODENT ENTER GOD
|
|
JMP RESHSC RESET HIGH SCORES
|
|
JMP HSCHK CHECK HIGH SCORES AFTER FAC SET RESTORE
|
|
JMP HSBUT HIGH SCORE RESET BUTTON
|
|
*
|
|
HSBUT LDA #$18 3 SECONDS REQUIRED
|
|
STA PD,U
|
|
LDA #$3F
|
|
STA SOUND
|
|
|
|
HSBUT1 NAP 8,HSBUT2 CHECK BUTTON
|
|
HSBUT2 LDA PIA0
|
|
BITA #8 STILL PRESSED??
|
|
BEQ HSBUT3 NOPE....BYE
|
|
DEC PD,U
|
|
BNE HSBUT1 NOT ENOUGH TIME YET
|
|
LDY #GODINT JUST PUT IN DEFAULT NAME
|
|
LDX #DEFHSR
|
|
LDB #23 NOT THE SCORE, JUST THE NAMES
|
|
JSR CMSMVV
|
|
JSR MKGODC MAKE THE NEW CHECK BYTE
|
|
CLR SOUND INDICATE MISSION ACCOMPLISHED
|
|
HSBUT3 JMP SUCIDE
|
|
|
|
*
|
|
HSCHK LDY #CMSCOR START AT BEGINNING OF TABLE
|
|
LDB #8 8 BAD ENTRIES IS ADEQUATE FOR FULL BASH
|
|
HSCHK1 JSR FSCCK FORM THE CHECK BYTE
|
|
EORA 6,Y COMPARE TO CHECK BYTE THERE
|
|
ANDA #$0F
|
|
BEQ HSCHK2
|
|
DECB
|
|
BEQ RESHSC 8 BAD ONES..RESET
|
|
HSCHK2 LDA #WDATA
|
|
STA WDOG
|
|
LEAY SCRSIZ,Y
|
|
CMPY #TODAYS BEYOND REGION??
|
|
BLO HSCHK1
|
|
RTS
|
|
*
|
|
*** RESHSC RESET HIGH SCORES
|
|
*
|
|
RESHSC LDA #WDATA
|
|
STA WDOG
|
|
LDX #DEFHSR DEFAULT SCORES
|
|
LDY #GODINT GODS INITIALS FOLLOWED BY GODS SCORE FOLLOWED BY REST
|
|
LDB #CDEFS1 SIZE OF DEFAULT TABLE
|
|
JSR CMSMVV TRANSFER THE BLOCK
|
|
LDX #DEFSC2
|
|
LDY #GODINT+(2*CDEFS1)
|
|
LDB #CDEFS2
|
|
JSR CMSMVV
|
|
JSR MKGODC
|
|
LDY #CMSCOR WALK THROUGH
|
|
RESHS1 JSR MKSCCK
|
|
LDA #WDATA
|
|
STA WDOG
|
|
LEAY SCRSIZ,Y
|
|
CMPY #TODAYS
|
|
BLO RESHS1
|
|
LDA #HSRESM SAY THAT THEY WERE RESET
|
|
JMP WRD7V AND RETURN
|
|
|
|
DEFHSR FCC 'BIL'
|
|
DEFGOD FCC 'WILLY'
|
|
FCB $3A
|
|
FCC 'ELKTRIX'
|
|
FCB $3A,$3A,$3A,$3A,$3A,$3A,$3A
|
|
FCB $00,$15,$17,$82
|
|
FCC 'VID'
|
|
FCB $00,$12,$21,$45
|
|
FCC 'KID'
|
|
FCB $00,$12,$21,$35
|
|
TODTAB FCC 'DRJ'
|
|
FCB $00,$05,$21,$27
|
|
FCC 'LED'
|
|
FCB $00,$05,$02,$18
|
|
FCC 'EPJ'
|
|
FCB $00,$04,$12,$55
|
|
FCC 'JER'
|
|
FCB $00,$04,$12,$50
|
|
FCC 'KID'
|
|
FCB $00,$03,$19,$20
|
|
FCC 'MLG'
|
|
FCB $00,$03,$19,$19
|
|
FCC 'SSR'
|
|
FCB $00,$02,$66,$45
|
|
FCC 'UNA'
|
|
FCB $00,$02,$66,$35
|
|
FCC 'JRS'
|
|
FCB $00,$02,$52,$50
|
|
FCC 'CJM'
|
|
FCB $00,$02,$41,$10
|
|
ENDTOD FCC 'KJF'
|
|
FCB $00,$02,$30,$20
|
|
FCC 'MRS'
|
|
FCB $00,$02,$20,$35
|
|
FCC 'PGD'
|
|
FCB $00,$02,$10,$90
|
|
FCC 'NJM'
|
|
FCB $00,$02,$09,$65
|
|
FCC 'NHD'
|
|
FCB $00,$02,$09,$60
|
|
CDEFS1 EQU *-DEFHSR
|
|
DEFSC2 FCC 'DON'
|
|
FCB $00,$01,$82,$80
|
|
FCC 'VIV'
|
|
FCB $00,$01,$82,$80
|
|
FCC 'GWW'
|
|
FCB $00,$01,$81,$05
|
|
FCC 'CRB'
|
|
FCB $00,$01,$80,$55
|
|
FCC 'MDR'
|
|
FCB $00,$01,$75,$65
|
|
FCC 'BAC'
|
|
FCB $00,$01,$72,$56
|
|
FCC 'W'
|
|
FCB $3A
|
|
FCC 'R'
|
|
FCB $00,$01,$70,$70
|
|
FCC 'MPT'
|
|
FCB $00,$01,$60,$60
|
|
FCC 'SUE'
|
|
FCB $00,$01,$55,$20
|
|
FCC 'MOM'
|
|
FCB $00,$01,$44,$80
|
|
FCC 'DAD'
|
|
FCB $00,$01,$44,$79
|
|
FCC 'SFD'
|
|
FCB $00,$01,$44,$78
|
|
FCC 'AKD'
|
|
FCB $00,$01,$44,$77
|
|
FCC 'CWK'
|
|
FCB $00,$01,$33,$30
|
|
FCC 'TMH'
|
|
FCB $00,$01,$32,$70
|
|
FCC 'EJS'
|
|
FCB $00,$01,$31,$20
|
|
FCC 'RAY'
|
|
FCB $00,$01,$30,$65
|
|
FCC 'GAY'
|
|
FCB $00,$01,$29,$65
|
|
FCC 'RKM'
|
|
FCB $00,$01,$28,$55
|
|
FCC 'CNS'
|
|
FCB $00,$01,$27,$55
|
|
*
|
|
CDEFS2 EQU *-DEFSC2 LENGTH OF TABLE
|
|
*
|
|
NULSCR FCB $3A,$3A,$3A
|
|
FCB $00,$01,$00,$00
|
|
NULSIZ EQU *-NULSCR
|
|
|
|
HSTUNE FCB $C0,1,1,$1B,1,1,2,0 PLEBIAN HIGH
|
|
GODSND EQU *
|
|
ULTUNE FCB $C0 UPPER LEFT OR GOD
|
|
FCB 1,$FF,$3C
|
|
FCB 1,$FF,$00 CONTINUE AIR-RAID
|
|
FCB 1,$20,00
|
|
FCB 1,$C0,$36 FALLING PLANE
|
|
FCB 1,$60,$3D FALLING BOMB
|
|
FCB 2,$A,$11 2 THUNDER CRACKS
|
|
FCB 2,$40,$3E,0 AND THE AFTERSHOCK
|
|
|
|
CLRSCR PSHS X,Y,B SAVE BASHED
|
|
LDX #NULSCR POINT AT NULL SCORE
|
|
LDB #NULSIZ HALF AN ENTRYS WORTH OF BYTES
|
|
JSR CMSMVV
|
|
PULS X,Y,B,PC
|
|
|
|
MKGODC PSHS A
|
|
BSR FGODC FOR GODS CHECK BYTE IN LOW HALF OF A
|
|
STA GODSCR+40 STORE AFTER THE CHARACTERS
|
|
PULS A,PC
|
|
|
|
*
|
|
** FORM GOD'S CHECK BYTE
|
|
*
|
|
|
|
FGODC PSHS X
|
|
LDX #GODINT LETS START AT THE VERY BEGINNING....
|
|
CLRA
|
|
FGODC0 ADDA ,X ADD THE CURRENT NIBBLE
|
|
FGODC1 LEAX 1,X
|
|
CMPX #GODSCR+40 CHECK BYTE???
|
|
BEQ FGODC1
|
|
CMPX #GODSCR+48 DONE???
|
|
BNE FGODC0
|
|
PULS X,PC RETURN IN LOW HALF OF A
|
|
|
|
MKSCCK PSHS A
|
|
BSR FSCCK FORM THE CHECK BYTE
|
|
STA 6,Y STORE IT
|
|
PULS A,PC
|
|
|
|
FSCCK PSHS Y,B
|
|
LDB #SCRSIZ
|
|
CLRA
|
|
MSCCK0 CMPB #SCRSIZ-6 ABOUT TO DO CHECK BYTE??
|
|
BEQ MSCCK1
|
|
ADDA ,Y ADD THE CURRENT BYTE
|
|
MSCCK1 LEAY 1,Y
|
|
DECB
|
|
BNE MSCCK0
|
|
PULS Y,B,PC
|
|
|
|
CKHS LDA #50 DONT GO THROUGH MORE THAN 50
|
|
PSHS A
|
|
LDY #CMSCOR WALK THROUGH SCORES
|
|
CKHS7 BSR FSCCK FORM THE SCORE CHECK BYTE
|
|
EORA 6,Y
|
|
ANDA #$F
|
|
BEQ CKHS5
|
|
CKHS4 JSR RMENTR REMOVE THE ENTRY
|
|
CLR CREDST
|
|
CLR CREDST+1
|
|
DEC ,S MAKE SURE WE DON'T REMOVE TOO MANY
|
|
BEQ CKHS67
|
|
BRA CKHS7 DON'T PUSH POINTER YET.
|
|
CKHS5 LDA #3
|
|
LDB #4
|
|
BSR CKENT
|
|
BCS CKHS4
|
|
CKHS6 LEAY SCRSIZ,Y MOVE TO NEXT
|
|
CMPY #TODAYS
|
|
BLO CKHS7
|
|
CKHS67 PULS A TAKE ENTRY OFF OF STACK
|
|
LDX #TODTAB TODAY'S TABLE (NORMAL BYTES)
|
|
LDY #TODAYS
|
|
LDB #ENDTOD-TODTAB
|
|
JSR CMSMVV
|
|
BSR FGODC NOW CHECK OUT GOD.
|
|
EORA GODSCR+40 CHECK IT OUT
|
|
ANDA #$F
|
|
BEQ CKHS1 OK..CONTINUE
|
|
BSR REMGOD
|
|
CKHS1 LDY #GODINT BEGINNING OF TEXT ONLY PART-CHECK ALPHA NUM
|
|
LDA #23 20 CHARS OF TEXT
|
|
LDB #4 4 BYTES OF NUMBERS PLEASE
|
|
BSR CKENT MAKE SURE ALPHAS AND NUMERICS
|
|
BCC CKHS3
|
|
BSR REMGOD REMOVE GOD
|
|
CKHS3 RTS
|
|
|
|
REMGOD LDX #GODSCR GOD BAD FIRST BLANK OUT
|
|
LDA #$3A
|
|
CKHS2Z JSR WCMOSA
|
|
CMPX #GODSCR+40 DONE??
|
|
BLO CKHS2Z DO ANOTHER CHARACTER
|
|
LDX #CMSCOR #2
|
|
LDY #GODSCR
|
|
LDA #6 6 NIBBLES
|
|
JSR BLKMOV MOVED
|
|
LDY #GODINT X STILL POINTS AT FIRST GUYS INITIALS
|
|
JSR BLKMOV MOV EM TOO
|
|
LDX #CMSCOR+6 #2 SCORE
|
|
LDY #GODSCR+40 #2 SCORE GOES HERE
|
|
LDA #8
|
|
JSR BLKMOV
|
|
JSR MKGODC MAKE THE CHECK BYTE
|
|
LDY #CMSCOR NOW REMEOVE #2
|
|
JMP RMENTR REMOVE #2 AND RETURN
|
|
|
|
CKENT PSHS D,X
|
|
LDB #WDATA
|
|
STB WDOG
|
|
TFR Y,X CMOSABLE REGISTER
|
|
CKENT1 JSR RCMOSB READ A BYTE
|
|
CMPB #$41 LOWER THAN A??
|
|
BHS CKENT4 NOPE...HIGH ENOUGH CHECK TOO HIGH
|
|
CMPB #$3A TOO LOW..CHECK SPACE
|
|
BNE CKENT5 NOPE...NOT VALID
|
|
CKENT4 CMPB #$5A
|
|
BHI CKENT5 HIGHER THAN Z
|
|
DECA ONE LESS ON THIS FRONT
|
|
BNE CKENT1
|
|
LDA 1,S GET THE SECOND PART COUNTER BACK
|
|
JSR RCMOSB GET THE CHECK BYTE
|
|
ANDB #$F
|
|
CMPB #9
|
|
BHI CKENT5 NO HEX ALLOWED
|
|
DECA
|
|
CKENT2 JSR RCMOSB
|
|
PSHS B
|
|
ANDB #$F LOOK AT LOW HALF
|
|
CMPB #9
|
|
PULS B
|
|
BHI CKENT5 NOT NUMERIC...ERROR!
|
|
ANDB #$F0
|
|
CMPB #$99
|
|
BHI CKENT5
|
|
DECA
|
|
BNE CKENT2
|
|
CKENT3 CLC
|
|
CKENT8 LDA #WDATA
|
|
STA WDOG
|
|
PULS X,D,PC
|
|
CKENT5 SEC
|
|
BRA CKENT8
|
|
|
|
*
|
|
*** RMENTR - REMOVE SCORE ENTRY POINTED TO BY Y.
|
|
*
|
|
|
|
RMENTR PSHS X,Y,D
|
|
LEAX SCRSIZ,Y X POINTS PAST Y
|
|
RMENT0 CMPX #TODAYS ARE WE BEYOND IN X.
|
|
BHS RMENT1 YEP...DONE.
|
|
LDA #SCRSIZ
|
|
BSR BLKMOV MOVE THE BLOCK X TO Y
|
|
LEAY SCRSIZ,Y
|
|
LEAX SCRSIZ,X
|
|
LDA #WDATA
|
|
STA WDOG
|
|
BRA RMENT0
|
|
RMENT1 JSR CLRSCR CLEAR THE BLOCK NOW POINTED AT BY Y (BOTTOM)
|
|
JSR MKSCCK AND FORM THE CHECK BYTE
|
|
PULS X,Y,D,PC
|
|
|
|
* BLKMOV A BYTES FROM [X] TO [Y]
|
|
|
|
BLKMOV PSHS X,Y,D
|
|
BLKMV1 LDB ,X+
|
|
STB ,Y+
|
|
DECA
|
|
BNE BLKMV1
|
|
PULS X,Y,D,PC
|
|
|
|
ENDGAM JSR GNCIDE KILL COLOR PROCS ETC.
|
|
JSR SCRCLR
|
|
JSR CRINIT PRETTY COLORS PLEASE
|
|
JSR P1SW POINT AT PLAYER 1
|
|
LDX #ZP1SCR PLAYER 1'S SCORE
|
|
LDB #1 PLAYER '1'
|
|
BSR EGSUB DO IT UP FOR HIM
|
|
LDB PLRCNT HOW MANY???
|
|
DECB
|
|
BEQ ENDGMR RETURN.
|
|
JSR SCRCLR
|
|
LDA PIA3 COCKTAIL??
|
|
BPL ENDGM1 NOPE
|
|
JSR P2SW THEN FACE THE NATION
|
|
ENDGM1 LDX #ZP2SCR
|
|
LDB #2
|
|
BSR EGSUB
|
|
JSR SCRCLR
|
|
JSR P1SW AND SWITCH TO PLAYER 1
|
|
ENDGMR JMP GOV JUMP TO GAME OVER (AMODE) PROCESSING
|
|
|
|
EGSUB PULS Y GET RETURN ADDRESS
|
|
STY EGRAM
|
|
STX PLRX SAVE PARAMS
|
|
STB CURPLR
|
|
JSR GODCHK SEE IF GOD
|
|
BCC EGSUB1
|
|
JSR GODESB HAVE HIM ENTER IT.
|
|
LDY #CMSCOR BUBBLE TO VACATE THIS POSITION
|
|
LDX #TODAYS-SCRSIZ FROM BOTTOM
|
|
JSR BUBDN BUBBLE EM DOWN
|
|
LDX #GODSCR+40 POINT AT SOON TO BE EX-GOD
|
|
LDY #CMSCOR+6 THIS IS WHERE IT GOES
|
|
LDA #8 8 NIBBLES
|
|
JSR BLKMOV MOVE IT DOWN
|
|
LDX #GODINT AND HIS INITIALS
|
|
LDY #CMSCOR
|
|
LDA #6
|
|
JSR BLKMOV AND MOVE IT
|
|
LDY #CMSCOR POINT AT #2
|
|
JSR MKSCCK AND FORM HIS CHECK BYTE
|
|
LDX PLRX POINT AT SCORE
|
|
LDY #GODSCR+40
|
|
LDB #4
|
|
JSR CMSMVV
|
|
JSR MKGODC
|
|
LDX #NULSCR BLANK INITIALS
|
|
LDY #GODINT
|
|
LDB #3
|
|
JSR CMSMVV
|
|
JSR SCRCLR
|
|
LDA #NOWMES TELL HIM TO ENTER HIS INITIALS NOW.
|
|
STA EGRAM2 INDICATE GOD JUST ENTERED
|
|
LDX #GA2 CHECK NUMBER OF INITIALS
|
|
JSR RCMOSB
|
|
CMPB #3
|
|
BEQ GET333 THEN USE INITIALS AS INITIALS
|
|
BRA GETHM2 JUMP INTO THE ROUTINE TO DO THAT.
|
|
* CODE TO GET GOD HERE.
|
|
EGSUB1 JSR TODCHK CHECK TODAYS HIGH
|
|
BCS GETHIM
|
|
JSR ALLCHK CHECK ALL TIME
|
|
BCS GETHIM
|
|
JMP [EGRAM] RETURN...HOW BORING.
|
|
*
|
|
GETHIM CLR EGRAM2
|
|
LDD #HSTUNE HIGH SCORE TUNE
|
|
CMPY #TODAYS IS IT POINTING AT THE HIGHEST
|
|
BNE GETHM1 NOPE
|
|
LDD #ULTUNE
|
|
GETHM1 JSR SNDLDS
|
|
LDA #CONG
|
|
GETHM2 LDB CURPLR GET PLAYER NUMBER
|
|
JSR SCRCLR
|
|
JSR WRD7V PUT THE MESSAGE OUT
|
|
LDD #$3A3A SPACES
|
|
STD ALTBL
|
|
STA ALTBL+2
|
|
LDD #$300 3 CHARS PLEASE, NO FUNNY ONES
|
|
LDX #$4680 PLACE TO DO IT
|
|
LDY #ALTBL PLACE FOR HS.
|
|
JSR GETLT
|
|
GET333 JSR TODCHK SEE WHERE TO PUT IT ETC.
|
|
BCC GETHM3 NOT THIS TIME JACK
|
|
LDX #TODEND-SCRSIZ END OF TODAYS
|
|
JSR SCTRNS
|
|
GETHM3 JSR ALLCHK CHECK FOR ALL TIME
|
|
BCC GETHM5 NOPE
|
|
TST EGRAM2 WAS THIS GOD??
|
|
BEQ GETHM4 NOPE
|
|
LDX #ALTBL
|
|
LDY #GODINT JUST STORE THE INITIALS ON THIS SIDE
|
|
LDB #3
|
|
JSR CMSMVV DONE.
|
|
JSR MKGODC FORM GOD'S NEW CHECK BYTE
|
|
LDA #5 INTERESTED IF THERE ARE 5 OTHERS!
|
|
BSR SETBZZ WELL????
|
|
BCC GETHM5 NOPE.
|
|
TFR X,Y MOVE LOWEST POINTED TO INTO Y
|
|
JSR RMENTR REMOVE IT.
|
|
BRA GTTHM8 AND TELL HIM IT WAS REMOVED
|
|
GETHM4 JSR SETBOT FIND PLACE TO BUBBLE DOWN TO (5 MAX RULE)
|
|
PSHS CC SAVE ANSWER
|
|
PSHS X
|
|
CMPY ,S++
|
|
BHI GETHM8 NOT BETTER THAN HIS TOP 5
|
|
BSR SCTRNS DONE.
|
|
GETHM8 PULS CC GET CARRY BACK
|
|
BCC GETHM5
|
|
GTTHM8 JSR SCRCLR
|
|
LDA #ONLY5M
|
|
JSR WRD7V
|
|
NAP $60,GETHM5
|
|
GETHM5 JMP [EGRAM]
|
|
|
|
SETBZZ PSHS Y,D
|
|
BRA SETBT0
|
|
|
|
SETBOT PSHS Y,D
|
|
LDX #GODINT SEE IF MATCH OF GOD INITIALS
|
|
BSR SETSUB
|
|
LDA #4 ASSUME MATCH
|
|
BCS SETBT0 YEP...ONLY 4 MORE NEEDED
|
|
INCA
|
|
SETBT0 STA XTEMP
|
|
LDX #CMSCOR POINT AT FIRST ENTRY
|
|
SETBT1 BSR SETSUB SEE IF THIS ONE MATCHES
|
|
BCC SETBT3 NOPE...
|
|
DEC XTEMP FOUND
|
|
BEQ SETBT5 AND TIME TO EXIT
|
|
SETBT3 LEAX SCRSIZ,X PUSH TO NEXT
|
|
CMPX #TODAYS
|
|
BLO SETBT1 NOT DONE...DO ANOTHER
|
|
LDX #TODAYS-SCRSIZ BUBBLE FROM BOTTOM
|
|
CLC
|
|
PULS Y,D,PC
|
|
SETBT5 SEC
|
|
PULS Y,D,PC AND RETURN IT
|
|
|
|
SETSUB PSHS X
|
|
LDY #ALTBL ALT TABLE
|
|
LDB #3
|
|
SETSB2 JSR RCMOSA
|
|
CMPA ,Y+ COMPARE TO ALT LETTER
|
|
BNE SETSB1 NO GOOD...MOVE TO NEXT
|
|
DECB ONE LESS TO DO
|
|
BNE SETSB2
|
|
SEC
|
|
PULS X,PC
|
|
SETSB1 CLC NO MATCH
|
|
PULS X,PC
|
|
|
|
SCTRNS PSHS Y
|
|
JSR BUBDN BUBBLE EM TO MAKE ROOM
|
|
LDX #ALTBL
|
|
LDB #3
|
|
JSR CMSMVV TRANSFER THE BLOCK
|
|
LDX PLRX
|
|
LDB #4
|
|
JSR CMSMVV TRANSFER THE SCORE
|
|
PULS Y
|
|
JMP MKSCCK FORM THE CHECK BYTE
|
|
|
|
BUBDN PSHS X,Y
|
|
TFR X,Y BOTTOM IS DESTINATION
|
|
BUBDN1 CMPY 2,S IS OUR DESTINATION WHAT WE WANT TO FILL??
|
|
BEQ BUBDUN THEN WE'RE DONE
|
|
LEAX -SCRSIZ,Y X IS SOURCE
|
|
LDA #SCRSIZ THAT MANY BYTES
|
|
JSR BLKMOV MOVE THE BLOCK
|
|
LEAY -SCRSIZ,Y
|
|
BRA BUBDN1
|
|
BUBDUN PULS X,Y,PC BYE
|
|
|
|
GODENT PULS D RETURN
|
|
STD EGRAM
|
|
LDB #1
|
|
BSR GODESB HAVE THE GUY ENTER IT
|
|
JSR MKGODC MAKE THE CHECK BYTE AND RETURN
|
|
JMP [EGRAM]
|
|
|
|
GODESB PULS Y GET RETURN ADDRESS
|
|
STY EGRAM2 SAVE IT
|
|
CLRA
|
|
TFR D,Y PASS PLAYER IN Y
|
|
LDD #GODSND
|
|
JSR SNDLDS MAKE THE SOUND (TUNE)
|
|
LDX #GA2 GET GOD LETTERS
|
|
JSR RCMOSB
|
|
JSR SCRCLR
|
|
CMPB #3 ONLY 3???
|
|
BNE GMANY NO
|
|
LDB CURPLR GET PLAYER
|
|
LDA #CONG
|
|
JSR WRD7V PRINT THE NORMAL MESSAGE
|
|
LDA #3
|
|
LDX #$4680
|
|
BRA GTHREE
|
|
GMANY LDA #GODMES
|
|
JSR WRD7V PRINT OUT CONGRATS
|
|
TFR B,A MAX LETTERS IN A NOW
|
|
JSR NEWBCH CALL THE RIGHT ONE
|
|
LDX #$2D80 PLACE TO DO IT
|
|
GTHREE LDY #ALTBL+20 PLACE TO STORE THE CHARS
|
|
LDB #$3A PUT SPACES IN
|
|
GODES1 STB ,-Y
|
|
CMPY #ALTBL
|
|
BHI GODES1
|
|
CLRB ALPHA ONLY
|
|
JSR GETLT ENTER THE STUFF
|
|
LDX #ALTBL
|
|
LDY #GODSCR
|
|
LDB #20
|
|
JSR CMSMVV
|
|
JMP [EGRAM2] RETURN
|
|
|
|
GODCHK PSHS X,Y
|
|
LDY #GODSCR+40 POINT AT THE SCORE PART
|
|
LDX PLRX POINT AT HIS SCORE
|
|
BSR CMPSCR COMPARE SCORES
|
|
PULS X,Y,PC RETURN THE CARRY BIT
|
|
|
|
TODCHK PSHS X RETURN ENTRY POINTER IF OK
|
|
LDY #TODAYS+6
|
|
LDX PLRX
|
|
TODCK1 BSR CMPSCR COMPARE
|
|
BCS TODBYE
|
|
LEAY SCRSIZ,Y PUSH TO NEXT
|
|
CMPY #TODEND BEYOND
|
|
BLO TODCK1
|
|
CLC
|
|
PULS X,PC
|
|
TODBYE LEAY -6,Y PUSH BACK TO BEGINNING OF ENTRY TO REPLACE
|
|
PULS X,PC AND RETURN WITH CARRY SET
|
|
|
|
ALLCHK PSHS X
|
|
LDY #GODSCR+40 POINT AT SCORE PART OF GOD ENTRY
|
|
LDX PLRX
|
|
ALCK1 BSR CMPSCR
|
|
BCS TODBYE
|
|
LEAY SCRSIZ,Y
|
|
CMPY #TODAYS-SCRSIZ BEYOND VISIBLES??????
|
|
BLO ALCK1 NOPE..CONTINUE
|
|
CLC
|
|
PULS X,PC NOT GOOD ENOUGH
|
|
|
|
CMPSCR PSHS Y,X,D
|
|
EXG X,Y MAKE X POINT AT CMOS
|
|
LDB ,Y TAKE AWAY PLAYERS 10 MILLIONS
|
|
ANDB #$F
|
|
STB ,Y
|
|
LDB #4 4 BYTES THROUGH
|
|
CMPSC1 JSR RCMOSA READ A BYTE
|
|
CMPB #4 FIRST TIME THROUGH??
|
|
BNE CMPSC2
|
|
ANDA #$0F THEN TAKE AWAY CHECK BYTE
|
|
CMPSC2 CMPA ,Y+ COMPARE TO PLAYERS SCORE
|
|
BHI CMPSC4 CMOS SCORE HIGHER
|
|
BLO CMPSC5 PLAYER'S SCORE HIGHER
|
|
DECB SAME...ARE WE DONE??
|
|
BNE CMPSC1 NOPE...COMPARE ANOTHER BYTE
|
|
CMPSC4 CLC
|
|
PULS X,Y,D,PC
|
|
CMPSC5 SEC PLAYER IS HIGHER
|
|
PULS X,Y,D,PC
|
|
|
|
SNDLDS CLR SNDPRI MAKE SURE WE GET OUT
|
|
JMP SNDLD
|
|
|
|
END
|