;-------------------------------- ; 100-GAME ; AUTHOR: KEN WESSEN ;-------------------------------- ECHO .EQ $FFEF PRHEX .EQ $FFE5 OUTHEX .EQ $FFDC KBD .EQ $D010 KBDRDY .EQ $D011 ; FAIL .EQ $FF CR .EQ $0D ; IOBUF .EQ $00 SCRTCH .EQ $02 MSGL .EQ $03 MSGH .EQ $04 SUM .EQ $05 TARGET .EQ $06 TURN .EQ $07 ; MAIN SED JSR INIT .1 INC TURN JSR PRSUM LDA SUM JSR PRVAL LDA TURN ROR BCC .2 JSR MYNUM BNE .3 .2 JSR YRNUM .3 CLC ADC SUM BCS .4 STA SUM BNE .1 .4 PHA PHA JSR CRLF JSR PRSUM LDA #1 JSR PRHEX PLA JSR OUTHEX JSR CRLF JSR CRLF JSR YOUORI JSR OUTSP PLA BEQ .5 LDA #LOSE STA MSGL LDA /LOSE STA MSGH SEC BCS .6 .5 LDA #WIN STA MSGL LDA /WIN STA MSGH .6 JSR SHWMSG JSR CRLF JSR CRLF JMP MAIN ; ERROR .AS -/INVALID/ .DA #0 YOU .AS -/YOU/ .DA #0 WIN .AS -/WIN!/ .DA #0 LOSE .AS -/LOSE!/ .DA #0 CMPPLY .AS -/I PLAY / .DA #0 SUMLN .AS -/SUM IS / .DA #0 ; GETCH LDA KBDRDY BPL GETCH LDA KBD AND #%0111.1111 RTS ; PROMPT LDA #"?" JSR ECHO ; OUTSP LDA #" " JMP ECHO ; CRLF LDA #CR JMP ECHO ; PRVAL CMP #$10 BCC .1 JSR OUTHEX BNE .2 .1 JSR PRHEX .2 JMP CRLF ; SHWMSG LDY #0 .1 LDA (MSGL),Y BEQ .2 JSR ECHO INY BNE .1 .2 RTS ; ASC2HX EOR #$30 CMP #$0A BCC .1 ADC #$88 CMP #$FA BCC .2 AND #$0F .1 RTS .2 LDA #FAIL RTS ; BYT2HX LDA IOBUF,X JSR ASC2HX CMP #FAIL BEQ .2 PHA INX LDA IOBUF,X JSR ASC2HX CMP #FAIL BNE .1 PLA RTS .1 STA SCRTCH PLA ASL ASL ASL ASL ADC SCRTCH RTS .2 LDA #FAIL RTS ; INIT LDA #0 STA TURN DEC TURN STA SUM STA TARGET INC TARGET RTS ; MYPLAY LDA #CMPPLY STA MSGL LDA /CMPPLY STA MSGH JSR SHWMSG RTS ; MYNUM LDA SUM CMP TARGET BEQ .1 BMI .2 LDA #$11 CLC ADC TARGET STA TARGET JMP MYNUM .1 LDA SUM ADC TARGET AND #$0F BNE .3 LDA #$05 BNE .3 .2 LDA TARGET SEC SBC SUM .3 PHA PHA JSR MYPLAY PLA JSR PRVAL PLA RTS ; YRNUM JSR PROMPT LDX #0 STX IOBUF STX IOBUF+1 .1 JSR GETCH CMP #CR BEQ .2 CMP #'0' BMI .1 CMP #'9'+1 BPL .1 STA IOBUF,X JSR ECHO INX CPX #2 BNE .1 .2 JSR CRLF LDX #0 JSR BYT2HX BEQ .3 CMP #FAIL BEQ .3 CMP #$11 BCS .3 RTS .3 LDA #ERROR STA MSGL LDA /ERROR STA MSGH JSR SHWMSG JSR CRLF JMP YRNUM ; PRSUM LDA #SUMLN STA MSGL LDA /SUMLN STA MSGH JMP SHWMSG ; YOUORI LDA TURN ROR BCC .1 LDA #'I' JMP ECHO .1 LDA #YOU STA MSGL LDA /YOU STA MSGH JSR SHWMSG RTS