;-------------------------------- ; NIM ; AUTHOR: KEN WESSEN ;-------------------------------- OUTCH .EQ $FFEF PRHEX .EQ $FFE5 OUTHEX .EQ $FFDC KBD .EQ $D010 KBDRDY .EQ $D011 ; FAIL .EQ $FF CR .EQ $0D ; SCRTCH .EQ $10 MSGL .EQ $11 MSGH .EQ $12 TURN .EQ $13 N .EQ $14 VALS .EQ $15 ; MAIN JSR INIT .1 INC TURN JSR PRHEAP LDA TURN ROR BCC .2 JSR MYGO SEC BCS .3 .2 JSR YRGO .3 JSR CRLF LDX N .4 LDA VALS-1,X BNE .1 DEX BNE .4 JSR PRHEAP JSR CRLF JSR YOUORI JSR OUTSP LDA #WIN STA MSGL LDA /WIN STA MSGH JSR SHWMSG JSR CRLF JSR CRLF JSR GETCH JMP MAIN ; INV .AS -/INVALID/ .DA #0 YOU .AS -/YOU/ .DA #0 WIN .AS -/WIN!/ .DA #0 CMPPLY .AS -/I / TAKE .AS -/TAKE/ .DA #0 FROM .AS -/FROM / HEAP .AS -/HEAP/ .DA #0 HEAPS .AS -/S ARE/ .DA #0 ; GETCH LDA KBDRDY BPL GETCH LDA KBD AND #%0111.1111 JMP OUTCH ; PROMPT LDA #'?' JSR OUTCH ; OUTSP LDA #" " JMP OUTCH ; CRLF LDA #CR JMP OUTCH ; SHWMSG LDY #0 .1 LDA (MSGL),Y BEQ .2 JSR OUTCH INY BNE .1 .2 RTS ; ASC2HX EOR #'0' CMP #10 BCC .1 ADC #$88 CMP #$FA BCC .2 AND #%0000.1111 .1 RTS .2 LDA #FAIL RTS ; ERROR JSR CRLF LDA #INV STA MSGL LDA /INV STA MSGH JSR SHWMSG JMP CRLF ; SHWHP LDA #HEAP STA MSGL LDA /HEAP STA MSGH JMP SHWMSG ; GETNMM JSR SHWMSG GETNM JSR PROMPT JSR GETCH JMP ASC2HX ; INIT LDA #0 STA TURN DEC TURN ; .1 JSR CRLF JSR SHWHP LDA #'S' JSR OUTCH JSR GETNM TAX BEQ .5 CMP #FAIL BEQ .5 STX N .2 LDY #'1' LDX #0 .3 JSR CRLF TYA JSR OUTCH JSR GETNM CMP #0 BEQ .6 CMP #FAIL BEQ .6 STA VALS,X INX INY CPX N BNE .3 JSR CRLF RTS .5 JSR ERROR JMP .1 .6 JSR ERROR JMP .2 ; CALCGO LDX N LDA #0 .1 EOR VALS-1,X DEX BNE .1 STA SCRTCH CMP #0 BEQ .4 LDX N .2 LDA SCRTCH EOR VALS-1,X CMP VALS-1,X BMI .3 DEX BNE .2 .3 STA SCRTCH LDA VALS-1,X SEC SBC SCRTCH RTS .4 LDX N .5 LDA VALS,X BNE .6 DEX BNE .5 .6 LDA #1 RTS ; MYGO LDA #CMPPLY STA MSGL LDA /CMPPLY STA MSGH JSR SHWMSG JSR OUTSP JSR CALCGO STA SCRTCH JSR PRHEX JSR OUTSP LDA #FROM STA MSGL LDA /FROM STA MSGH JSR SHWMSG JSR OUTSP TXA JSR PRHEX DEX ; UPDTHP LDA VALS,X SEC SBC SCRTCH STA VALS,X JSR CRLF RTS ; YRGO JSR SHWHP JSR GETNM TAX BEQ .3 CPX #FAIL BEQ .3 CPX N BEQ .1 BCS .3 .1 DEX JSR CRLF LDA #TAKE STA MSGL LDA /TAKE STA MSGH JSR GETNMM CMP #0 BEQ .3 CMP #FAIL BEQ .3 CMP VALS,X BEQ .2 BCS .3 .2 STA SCRTCH JMP UPDTHP .3 JSR ERROR JMP YRGO ; PRHEAP JSR SHWHP LDA #HEAPS STA MSGL LDA /HEAPS STA MSGH JSR SHWMSG LDX #0 .1 JSR OUTSP LDA VALS,X JSR PRHEX INX CPX N BMI .1 JSR CRLF RTS ; YOUORI LDA TURN ROR BCC .1 LDA #'I' JMP OUTCH .1 LDA #YOU STA MSGL LDA /YOU STA MSGH JSR SHWMSG RTS