LDA #$91 ; CTRL-Q = TURN OFF 80 COLUMN JSR $FDED ; COUT STA $C000 ; Turn off 80STORE STA $C00E ; Primary charset CLI ; Turn off interrupts LDA #ARENAS STA ARENAP+1 ;* ;* Check for connected paddles ;* JSR GCREAD LDA #$01 CPX #GCMAX BNE + CPY #GCMAX BNE + LDA #$00 + STA USEPDLS ;* ;* Initialize game state and get player options ;* INITGAME LDA $C054 ; Display page 1 JSR $FB39 ; TXT mode JSR NORMAL JSR $FC58 ; HOME LDA #$10 STA GCPREVX STA GCPREVY ;* ;* Init player panel ;* JSR INVERSE LDX #0 LDY #20 JSR PUTSXY !TEXT "/:::: PLAYER 1 ::::\/:::: PLAYER 2 ::::\", 0 LDX #0 LDY #21 JSR PUTSXY !TEXT "! [===============]!![===============] !", 0 LDX #0 LDY #22 JSR PUTSXY !TEXT "! <<<<<<<*>>>>>>> !! <<<<<<<*>>>>>>> !", 0 LDX #0 LDY #23 JSR PUTSXY !TEXT "\::::::::::::::::::/\::::::::::::::::::/", 0 ;* ;* Display initial setting screen ;* SHOWOPT JSR NORMAL LDX #12 LDY #0 JSR PUTSXY !TEXT "BY: RESMAN", 0 LDX #10 LDY #1 JSR PUTSXY !TEXT "COPYRIGHT 1977", 0 LDX #4 LDY #19 JSR PUTSXY !TEXT "(WHY 1977 WON'T BE LIKE 1977)", 0 LDX #10 LDY #4 JSR GOTOXY JSR INVERSE LDA #'P' JSR PUTC JSR NORMAL JSR PUTS !TEXT "ADDLES: ", 0 LDA USEPDLS BEQ + JSR PUTS !TEXT "ENABLE ", 0 JMP ++ + JSR PUTS !TEXT "DISABLE", 0 ++ LDX #10 LDY #7 JSR GOTOXY JSR INVERSE LDA #'A' JSR PUTC JSR NORMAL JSR PUTS !TEXT "RENA: ", 0 LDA ARENAP STA TMP LDA ARENAP+1 STA TMP+1 LDY #$00 - TYA PHA LDA (TMP),Y JSR PUTC PLA TAY INY CPY #$10 BNE - LDX #10 LDY #10 JSR PUTSXY !TEXT "PLAYER ", 0 JSR INVERSE LDA #'1' JSR PUTC JSR NORMAL LDA P1MAN BEQ + JSR PUTS !TEXT ": HUMAN ", 0 JMP ++ + JSR PUTS !TEXT ": COMPUTER", 0 ++ LDX #10 LDY #11 JSR PUTSXY !TEXT "PLAYER ", 0 JSR INVERSE LDA #'2' JSR PUTC JSR NORMAL LDA P2MAN BEQ + JSR PUTS !TEXT ": HUMAN ", 0 JMP ++ + JSR PUTS !TEXT ": COMPUTER", 0 ++ LDX #10 LDY #14 JSR PUTSXY !TEXT "START GAME:", 0 LDX #15 LDY #15 JSR GOTOXY JSR INVERSE LDA #'S' JSR PUTC JSR NORMAL JSR PUTS !TEXT "HORT TRAIL", 0 LDX #15 LDY #16 JSR GOTOXY JSR INVERSE LDA #'M' JSR PUTC JSR NORMAL JSR PUTS !TEXT "EDIUM TRAIL", 0 LDX #15 LDY #17 JSR GOTOXY JSR INVERSE LDA #'L' JSR PUTC JSR NORMAL JSR PUTS !TEXT "ONG TRAIL", 0 ;* ;* Scan for option input ;* OPTION LDA KEYBD BMI + JMP OPTPDLS + BIT KEYSTRB CMP #$D0 ; P key BNE + LDA USEPDLS EOR #$01 STA USEPDLS JMP SHOWOPT + CMP #$C1 ; A key BNE ++ ; Move to next arena LDA ARENAP STA TMP LDA ARENAP+1 STA TMP+1 LDY #$1A ; Scan for end of compressed map - LDA (TMP),Y BEQ + INY BNE - + INY TYA CLC ADC TMP STA TMP LDA #$00 ADC TMP+1 STA TMP+1 LDY #$00 LDA (TMP),Y BNE - INY LDA (TMP),Y ; Check for end of arena == 0 BNE + LDA #ARENAS STA ARENAP+1 JMP SHOWOPT + TYA CLC ADC TMP STA ARENAP LDA #$00 ADC TMP+1 STA ARENAP+1 JMP SHOWOPT ++ CMP #$B1 ; 1 KEY BNE + LDA P1MAN EOR #$01 STA P1MAN JMP SHOWOPT + CMP #$B2 ; 2 KEY BNE + LDA P2MAN EOR #$01 STA P2MAN JMP SHOWOPT + CMP #$D3 ; S key BNE + LDA #$0F STA LENTAIL BNE STARTGAME + CMP #$CD ; M key BNE + LDA #$7F STA LENTAIL BNE STARTGAME + CMP #$CC ; L key BNE + LDA #$FF STA LENTAIL BNE STARTGAME + CMP #$9B ; ESC key BNE OPTPDLS JMP EXIT OPTPDLS LDA USEPDLS BEQ + JSR GCREAD JSR UPDTPDL + JMP OPTION STARTGAME ;* ;* Init arena map ;* LDA #>MAP STA STPTRH LDY #(MAP+$1000) BNE INITMAP ;* ;* Get arena initial start positions ;* LDA ARENAP STA TMP LDA ARENAP+1 STA TMP+1 LDY #$10 ; Copy start angle/pos out of arena map LDA (TMP),Y STA P1ANGLE INY LDA (TMP),Y STA P1XF INY LDA (TMP),Y STA P1XI STA P1XPREV INY LDA (TMP),Y STA P1YF INY LDA (TMP),Y STA P1YI STA P1YPREV INY LDA (TMP),Y STA P2ANGLE INY LDA (TMP),Y STA P2XF INY LDA (TMP),Y STA P2XI STA P2XPREV INY LDA (TMP),Y STA P2YF INY LDA (TMP),Y STA P2YI STA P2YPREV ;* ;* Init rest of player variables ;* LDX #$00 ; Clear out tails - LDA #$40 STA P1YTAIL,X STA P2YTAIL,X LDA #$00 STA P1XTAIL,X LDA #$7F STA P2XTAIL,X DEX BNE - STX P1TURBO ; Reset turbo values STX P2TURBO LDA #FULLBOOST STA P1BOOST STA P2BOOST ;* ;* Start decompressing into map ;* LDA #>MAP STA STPTRH LDA #