mirror of
https://github.com/tebl/RC-Project-Board.git
synced 2024-09-27 09:55:22 +00:00
Chapter 6
This commit is contained in:
parent
1d15f7fbf3
commit
aa257d22bf
@ -0,0 +1,4 @@
|
||||
@echo off
|
||||
sbasm.py spinner.asm
|
||||
type spinner.list
|
||||
pause
|
@ -0,0 +1,23 @@
|
||||
.CR 65C02
|
||||
.TF spinner.hex,INT
|
||||
.LF spinner.list
|
||||
;
|
||||
; SPINNER IS A REACTION TIMING GAME USING '6502 GAMES' HARDWARE, AN LED CHASES
|
||||
; AROUND THE LED CUBE AND YOU SHOULD TRY TO HIT THE CORRESPONDING BUTTON.
|
||||
; BOARD SHOULD ; BE JUMPERED WITH VIA CHIPS AT THE ADDRESSES SPECIFIED BELOW.
|
||||
; OTHER THAN THAT THE CODE IS SHOULD BE UNCHANGED FROM THE BOOK THOUGH THERE
|
||||
; WILL BE SOME DIFFERENCES DUE TO ASSEMBLER USED.
|
||||
;
|
||||
VIA1 .EQ $4000 ; GAME BOARD (VIA #1)
|
||||
VIA3 .EQ $4C00 ; GAME BOARD (VIA #3)
|
||||
|
||||
.OR $8000
|
||||
.TA $0000
|
||||
BE6502 .IN ../../common/CH06-Spinner/game.asm
|
||||
;
|
||||
; STORE CPU INITIALIZATION VECTORS AT THE END OF THE EEPROM.
|
||||
;
|
||||
.NO $FFFA,$FF
|
||||
.DA BE6502 ; NMI VECTOR
|
||||
.DA BE6502 ; RESET VECTOR
|
||||
.DA BE6502 ; IRQ VECTOR
|
2049
projects/GB-001 Game Board/software/BE6502/CH6-Spinner/spinner.hex
Normal file
2049
projects/GB-001 Game Board/software/BE6502/CH6-Spinner/spinner.hex
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,138 @@
|
||||
0000- 4 ;
|
||||
0000- 5 ; SPINNER IS A REACTION TIMING GAME USING '6502 GAMES' HARDWARE, AN LED CHASES
|
||||
0000- 6 ; AROUND THE LED CUBE AND YOU SHOULD TRY TO HIT THE CORRESPONDING BUTTON.
|
||||
0000- 7 ; BOARD SHOULD ; BE JUMPERED WITH VIA CHIPS AT THE ADDRESSES SPECIFIED BELOW.
|
||||
0000- 8 ; OTHER THAN THAT THE CODE IS SHOULD BE UNCHANGED FROM THE BOOK THOUGH THERE
|
||||
0000- 9 ; WILL BE SOME DIFFERENCES DUE TO ASSEMBLER USED.
|
||||
0000- 10 ;
|
||||
4000- 11 VIA1 .EQ $4000 ; GAME BOARD (VIA #1)
|
||||
4C00- 12 VIA3 .EQ $4C00 ; GAME BOARD (VIA #3)
|
||||
0000- 13
|
||||
8000- 14 .OR $8000
|
||||
8000- 15 .TA $0000
|
||||
8000- 16 BE6502 .IN ../../common/CH06-Spinner/game.asm
|
||||
8000- I 1 ; 'SPINNER'
|
||||
8000- I 2 ; PROGRAM TO TEST REACTION TIME OF PLAYER. BLIP OF LIGHT SPINS AROUND EDGE OF
|
||||
8000- I 3 ; 3X3 LED MATRIX, AND USER MUST PRESS CORRESPONDING KEY. IF, AFTER A NUMBER OF
|
||||
8000- I 4 ; SPINS, CORRECT KEY HAS NOT BEEN PRESSED, BLIP SPINS SLOWER. IF CORRECT KEY
|
||||
8000- I 5 ; HAS BEEN PRESSED, BLIP SPINS FASTER. ALL LEDS LIGHT WHEN SUCCESSFUL KEYPRESS
|
||||
8000- I 6 ; OCCURS ON MAXIMUM SPEED.
|
||||
8000- I 7 ;
|
||||
8000- I 8 ; I/O:
|
||||
8000- I 9 ;
|
||||
4003- I 10 DDR1A .EQ VIA1+3 ; PORT A DATA DIRECTION REGISTER
|
||||
4002- I 11 DDR1B .EQ VIA1+2 ; PORT B DATA DIRECTION REGISTER
|
||||
4001- I 12 PORT1A .EQ VIA1+1 ; PORT A
|
||||
4000- I 13 PORT2 .EQ VIA1
|
||||
4000- I 14 PORT1B .EQ VIA1 ; PORT B
|
||||
4C03- I 15 DDR3A .EQ VIA3+3 ; PORT A DATA DIRECTION REGISTER
|
||||
4C02- I 16 DDR3B .EQ VIA3+2 ; PORT B DATA DIRECTION REGISTER
|
||||
4C00- I 17 PORT3B .EQ VIA3 ; PORT B
|
||||
4C01- I 18 PORT3A .EQ VIA3+1 ; PORT A
|
||||
8000- I 19 ;
|
||||
8000- I 20 ; VARIABLE STORAGE.
|
||||
8000- I 21 ;
|
||||
0000- I 22 ZP .EQ $00
|
||||
0000- I 23 DURAT .EQ ZP ; DURATION OF INTER-MOVEMENT DELAY.
|
||||
0001- I 24 DIFCLT .EQ ZP+1 ; DIFFICULTY LEVEL.
|
||||
0002- I 25 DNTST .EQ ZP+2 ; SET TO $01 IF KEY DOWN AT START OF
|
||||
8000- I 26 ; INTER-MOVEMENT DELAY.
|
||||
8000- I 27 ;
|
||||
8000- I 28 ; MAIN PROGRAM
|
||||
8000- I 29 ;
|
||||
8000-A9 FF I 30 ( 2) START LDA #$FF ; SET I/O REGISTERS.
|
||||
8002-8D 03 40 I 31 ( 4) STA DDR1A
|
||||
8005-8D 02 40 I 32 ( 4) STA DDR1B
|
||||
8008-8D 02 4C I 33 ( 4) STA DDR3B
|
||||
800B-A9 08 I 34 ( 2) LDA #8
|
||||
800D-85 01 I 35 ( 3) STA DIFCLT ; SET DIFFICULTY
|
||||
800F-8D 03 4C I 36 ( 4) STA DDR3A ; SET KEYSTROBE PORT.
|
||||
8012-A0 00 I 37 ( 2) NWGME LDY #0 ; RESET LOOP/BLIP COUNTER.
|
||||
8014-A9 00 I 38 ( 2) LOOP LDA #0
|
||||
8016-85 02 I 39 ( 3) STA DNTST ; CLEAR KEYDOWN INDICATOR.
|
||||
8018-8D 00 40 I 40 ( 4) STA PORT1B ; CLEAR HI LED PORT.
|
||||
801B-98 I 41 ( 2) TYA ; USE LOWER 3 BITS OF MAIN COUNTER
|
||||
801C-29 07 I 42 ( 2) AND #$07 ; AS INDEX TO FIND LED PATTERN
|
||||
801E-AA I 43 ( 2) TAX ; IN TABLE OF PATTERNS.
|
||||
801F-BD 95 80 I 44 ( 4*) LDA LTABLE,X ; GET PATTERN FOR LED TO BE TURNED ON
|
||||
8022-8D 01 40 I 45 ( 4) STA PORT1A ; STORE IN LED PORT.
|
||||
8025-D0 05 I 46 (2**) BNE CHECK ; IF PATTERN <> 0, SKIP.
|
||||
8027-A9 01 I 47 ( 2) LDA #1 ; PATTERN=0, SO SET HI BIT.
|
||||
8029-8D 00 40 I 48 ( 4) STA PORT1B
|
||||
802C-BD 9D 80 I 49 ( 4*) CHECK LDA KYTBL,X ; GET KEY# TO TEST FOR.
|
||||
802F-8D 00 4C I 50 ( 4) STA PORT3B ; STORE IN KEYPORT
|
||||
8032-2C 01 4C I 51 ( 4) BIT PORT3A ; STROBE HI?
|
||||
8035-30 04 I 52 (2**) BMI DELAY ; IF NOT, SKIP.
|
||||
8037-A9 01 I 53 ( 2) INVALD LDA #01 ; STROBE HI; SET KEY DOWN MARKER.
|
||||
8039-85 02 I 54 ( 3) STA DNTST
|
||||
803B-A9 80 I 55 ( 2) DELAY LDA #$80 ; GET # OF LOOP CYCLES (DELAY LENGTH)
|
||||
803D-85 00 I 56 ( 3) STA DURAT
|
||||
803F-A5 01 I 57 ( 3) DL1 LDA DIFCLT ; MULTIPLY DIFFICULTY COUNTER
|
||||
8041-0A I 58 ( 2) ASL A ; BY FOUR TO DETERMINE DELAY
|
||||
8042-0A I 59 ( 2) ASL A ; LENGTH.
|
||||
8043-AA I 60 ( 2) TAX
|
||||
8044-26 02 I 61 ( 5) DL2 ROL DNTST ; DELAY ACCORDING TO DIFCLT.
|
||||
8046-66 02 I 62 ( 5) ROR DNTST
|
||||
8048-CA I 63 ( 2) DEX
|
||||
8049-D0 F9 I 64 (2**) BNE DL2 ; LOOP UNTIL COUNT = 0
|
||||
804B-A5 02 I 65 ( 3) LDA DNTST ; GET KEY DOWN FLAG.
|
||||
804D-D0 05 I 66 (2**) BNE NOTST ; IF KEY WAS DOWN AT BEGINNING OF
|
||||
804F- I 67 ; DELAY, DON'T TEST IT.
|
||||
804F-2C 01 4C I 68 ( 4) BIT PORT3A ; CHECK KEY STROBE
|
||||
8052-10 19 I 69 (2**) BPL HIT ; KEY HAS CLOSED DURING DELAY: HIT.
|
||||
8054-C6 00 I 70 ( 5) NOTST DEC DURAT ; COUNT DELAY LOOP DOWN.
|
||||
8056-D0 E7 I 71 (2**) BNE DL1 ; LOOP IF NOT 0.
|
||||
8058-C8 I 72 ( 2) INY ; INCREMENT MAIN SPIN COUNTER.
|
||||
8059-D0 B9 I 73 (2**) BNE LOOP ; IF 32 LOOPS NOT DONE, DO NEXT LOOP EASIER
|
||||
805B-A6 01 I 74 ( 3) LDX DIFCLT ; NO HITS THIS TIME, MAKE NEXT EASIER.
|
||||
805D-E8 I 75 ( 2) INX
|
||||
805E-8A I 76 ( 2) TXA ; MAKE SURE DIFFICULTY DOES NOT
|
||||
805F-C9 10 I 77 ( 2) CMP #16 ; EXCEED 15.
|
||||
8061-D0 02 I 78 (2**) BNE OK
|
||||
8063-A9 0F I 79 ( 2) LDA #15
|
||||
8065-85 01 I 80 ( 3) OK STA DIFCLT
|
||||
8067-20 82 80 I 81 ( 6) JSR WAIT ; PAUSE A BIT
|
||||
806A-4C 12 80 I 82 ( 3) JMP NWGME ; START NEW ROUND.
|
||||
806D-20 82 80 I 83 ( 6) HIT JSR WAIT ; PAUSE A BIT.
|
||||
8070-C6 01 I 84 ( 5) DEC DIFCLT ; MAKE NEXT GAME HARDER.
|
||||
8072-D0 9E I 85 (2**) BNE NWGME ; IF DIFFICULTY NOT 0 (HARDEST), PLAY NEXT GAME.
|
||||
8074-A9 FF I 86 ( 2) LDA #$FF ; PLAYER HAS MADE IT TO TOP
|
||||
8076-8D 01 40 I 87 ( 4) STA PORT1A ; DIFFICULTY LEVEL, LIGHT ALL LEDS.
|
||||
8079-8D 00 40 I 88 ( 4) STA PORT1B
|
||||
807C-20 82 80 I 89 ( 6) JSR WAIT ; PAUSE A BIT.
|
||||
807F-4C 00 80 I 90 ( 3) JMP START ; PLAY ANOTHER GAME.
|
||||
8082- I 91 ;
|
||||
8082- I 92 ; SUBROUTINE 'WAIT'
|
||||
8082- I 93 ; SHORT DELAY.
|
||||
8082- I 94 ;
|
||||
8082-A0 FF I 95 ( 2) WAIT LDY #$FF
|
||||
8084-A2 FF I 96 ( 2) LP1 LDX #$FF
|
||||
8086-66 00 I 97 ( 5) LP2 ROR DURAT
|
||||
8088-26 00 I 98 ( 5) ROL DURAT
|
||||
808A-66 00 I 99 ( 5) ROR DURAT
|
||||
808C-26 00 I 100 ( 5) ROL DURAT
|
||||
808E-CA I 101 ( 2) DEX
|
||||
808F-D0 F5 I 102 (2**) BNE LP2
|
||||
8091-88 I 103 ( 2) DEY
|
||||
8092-D0 F0 I 104 (2**) BNE LP1
|
||||
8094-60 I 105 ( 6) RTS
|
||||
8095- I 106 ;
|
||||
8095- I 107 ; TABLE OF PATTERNS TO BE SENT TO LED MATRIX AT EACH LOOP COUNTM SET FOR
|
||||
8095- I 108 ; CLOCKWISE ROTATION STARTING AT LED #1.
|
||||
8095- I 109 ;
|
||||
8095-01 02 04 20
|
||||
00 80 40 08 I 110 LTABLE .HS 01.02.04.20.00.80.40.08
|
||||
809D- I 111
|
||||
809D- I 112 ;
|
||||
809D- I 113 ; TABLE OF PATTERNS TO BE SENT TO KEYBOARD TO TEST IF LEDS ARE ON AT EACH
|
||||
809D- I 114 ; LOOP COUNT.
|
||||
809D- I 115 ;
|
||||
809D-01 02 03 06
|
||||
09 08 07 04 I 116 KYTBL .HS 01.02.03.06.09.08.07.04
|
||||
80A5- 17 ;
|
||||
80A5- 18 ; STORE CPU INITIALIZATION VECTORS AT THE END OF THE EEPROM.
|
||||
80A5- 19 ;
|
||||
FFFA 20 .NO $FFFA,$FF
|
||||
FFFA-00 80 21 .DA BE6502 ; NMI VECTOR
|
||||
FFFC-00 80 22 .DA BE6502 ; RESET VECTOR
|
||||
FFFE-00 80 23 .DA BE6502 ; IRQ VECTOR
|
@ -0,0 +1,4 @@
|
||||
@echo off
|
||||
sbasm.py spinner.asm
|
||||
type spinner.list
|
||||
pause
|
@ -0,0 +1,16 @@
|
||||
.CR 6502
|
||||
.TF spinner.hex,INT
|
||||
.LF spinner.list
|
||||
;
|
||||
; SPINNER IS A REACTION TIMING GAME USING '6502 GAMES' HARDWARE, AN LED CHASES
|
||||
; AROUND THE LED CUBE AND YOU SHOULD TRY TO HIT THE CORRESPONDING BUTTON.
|
||||
; BOARD SHOULD ; BE JUMPERED WITH VIA CHIPS AT THE ADDRESSES SPECIFIED BELOW.
|
||||
; OTHER THAN THAT THE CODE IS SHOULD BE UNCHANGED FROM THE BOOK THOUGH THERE
|
||||
; WILL BE SOME DIFFERENCES DUE TO ASSEMBLER USED.
|
||||
;
|
||||
VIA1 .EQ $C000
|
||||
VIA3 .EQ $CC00
|
||||
|
||||
.OR $0200
|
||||
.TA $0200
|
||||
RCONE .IN ../../common/CH06-Spinner/game.asm
|
@ -0,0 +1,12 @@
|
||||
:10020000A9FF8D03C08D02C08D02CCA90885018D88
|
||||
:1002100003CCA000A90085028D00C0982907AABDC3
|
||||
:1002200095028D01C0D005A9018D00C0BD9D028D34
|
||||
:1002300000CC2C01CC3004A9018502A9808500A541
|
||||
:10024000010A0AAA26026602CAD0F9A502D0052C24
|
||||
:1002500001CC1019C600D0E7C8D0B9A601E88AC9F8
|
||||
:1002600010D002A90F85012082024C1202208202C6
|
||||
:10027000C601D09EA9FF8D01C08D00C02082024C16
|
||||
:100280000002A0FFA2FF6600260066002600CAD07A
|
||||
:10029000F588D0F0600102042000804008010203CC
|
||||
:0502A000060908070437
|
||||
:00000001FF
|
@ -0,0 +1,131 @@
|
||||
0000- 4 ;
|
||||
0000- 5 ; SPINNER IS A REACTION TIMING GAME USING '6502 GAMES' HARDWARE, AN LED CHASES
|
||||
0000- 6 ; AROUND THE LED CUBE AND YOU SHOULD TRY TO HIT THE CORRESPONDING BUTTON.
|
||||
0000- 7 ; BOARD SHOULD ; BE JUMPERED WITH VIA CHIPS AT THE ADDRESSES SPECIFIED BELOW.
|
||||
0000- 8 ; OTHER THAN THAT THE CODE IS SHOULD BE UNCHANGED FROM THE BOOK THOUGH THERE
|
||||
0000- 9 ; WILL BE SOME DIFFERENCES DUE TO ASSEMBLER USED.
|
||||
0000- 10 ;
|
||||
C000- 11 VIA1 .EQ $C000
|
||||
CC00- 12 VIA3 .EQ $CC00
|
||||
0000- 13
|
||||
0200- 14 .OR $0200
|
||||
0200- 15 .TA $0200
|
||||
0200- 16 RCONE .IN ../../common/CH06-Spinner/game.asm
|
||||
0200- I 1 ; 'SPINNER'
|
||||
0200- I 2 ; PROGRAM TO TEST REACTION TIME OF PLAYER. BLIP OF LIGHT SPINS AROUND EDGE OF
|
||||
0200- I 3 ; 3X3 LED MATRIX, AND USER MUST PRESS CORRESPONDING KEY. IF, AFTER A NUMBER OF
|
||||
0200- I 4 ; SPINS, CORRECT KEY HAS NOT BEEN PRESSED, BLIP SPINS SLOWER. IF CORRECT KEY
|
||||
0200- I 5 ; HAS BEEN PRESSED, BLIP SPINS FASTER. ALL LEDS LIGHT WHEN SUCCESSFUL KEYPRESS
|
||||
0200- I 6 ; OCCURS ON MAXIMUM SPEED.
|
||||
0200- I 7 ;
|
||||
0200- I 8 ; I/O:
|
||||
0200- I 9 ;
|
||||
C003- I 10 DDR1A .EQ VIA1+3 ; PORT A DATA DIRECTION REGISTER
|
||||
C002- I 11 DDR1B .EQ VIA1+2 ; PORT B DATA DIRECTION REGISTER
|
||||
C001- I 12 PORT1A .EQ VIA1+1 ; PORT A
|
||||
C000- I 13 PORT2 .EQ VIA1
|
||||
C000- I 14 PORT1B .EQ VIA1 ; PORT B
|
||||
CC03- I 15 DDR3A .EQ VIA3+3 ; PORT A DATA DIRECTION REGISTER
|
||||
CC02- I 16 DDR3B .EQ VIA3+2 ; PORT B DATA DIRECTION REGISTER
|
||||
CC00- I 17 PORT3B .EQ VIA3 ; PORT B
|
||||
CC01- I 18 PORT3A .EQ VIA3+1 ; PORT A
|
||||
0200- I 19 ;
|
||||
0200- I 20 ; VARIABLE STORAGE.
|
||||
0200- I 21 ;
|
||||
0000- I 22 ZP .EQ $00
|
||||
0000- I 23 DURAT .EQ ZP ; DURATION OF INTER-MOVEMENT DELAY.
|
||||
0001- I 24 DIFCLT .EQ ZP+1 ; DIFFICULTY LEVEL.
|
||||
0002- I 25 DNTST .EQ ZP+2 ; SET TO $01 IF KEY DOWN AT START OF
|
||||
0200- I 26 ; INTER-MOVEMENT DELAY.
|
||||
0200- I 27 ;
|
||||
0200- I 28 ; MAIN PROGRAM
|
||||
0200- I 29 ;
|
||||
0200-A9 FF I 30 ( 2) START LDA #$FF ; SET I/O REGISTERS.
|
||||
0202-8D 03 C0 I 31 ( 4) STA DDR1A
|
||||
0205-8D 02 C0 I 32 ( 4) STA DDR1B
|
||||
0208-8D 02 CC I 33 ( 4) STA DDR3B
|
||||
020B-A9 08 I 34 ( 2) LDA #8
|
||||
020D-85 01 I 35 ( 2) STA DIFCLT ; SET DIFFICULTY
|
||||
020F-8D 03 CC I 36 ( 4) STA DDR3A ; SET KEYSTROBE PORT.
|
||||
0212-A0 00 I 37 ( 2) NWGME LDY #0 ; RESET LOOP/BLIP COUNTER.
|
||||
0214-A9 00 I 38 ( 2) LOOP LDA #0
|
||||
0216-85 02 I 39 ( 2) STA DNTST ; CLEAR KEYDOWN INDICATOR.
|
||||
0218-8D 00 C0 I 40 ( 4) STA PORT1B ; CLEAR HI LED PORT.
|
||||
021B-98 I 41 ( 2) TYA ; USE LOWER 3 BITS OF MAIN COUNTER
|
||||
021C-29 07 I 42 ( 2) AND #$07 ; AS INDEX TO FIND LED PATTERN
|
||||
021E-AA I 43 ( 2) TAX ; IN TABLE OF PATTERNS.
|
||||
021F-BD 95 02 I 44 ( 4*) LDA LTABLE,X ; GET PATTERN FOR LED TO BE TURNED ON
|
||||
0222-8D 01 C0 I 45 ( 4) STA PORT1A ; STORE IN LED PORT.
|
||||
0225-D0 05 I 46 (2**) BNE CHECK ; IF PATTERN <> 0, SKIP.
|
||||
0227-A9 01 I 47 ( 2) LDA #1 ; PATTERN=0, SO SET HI BIT.
|
||||
0229-8D 00 C0 I 48 ( 4) STA PORT1B
|
||||
022C-BD 9D 02 I 49 ( 4*) CHECK LDA KYTBL,X ; GET KEY# TO TEST FOR.
|
||||
022F-8D 00 CC I 50 ( 4) STA PORT3B ; STORE IN KEYPORT
|
||||
0232-2C 01 CC I 51 ( 4) BIT PORT3A ; STROBE HI?
|
||||
0235-30 04 I 52 (2**) BMI DELAY ; IF NOT, SKIP.
|
||||
0237-A9 01 I 53 ( 2) INVALD LDA #01 ; STROBE HI; SET KEY DOWN MARKER.
|
||||
0239-85 02 I 54 ( 2) STA DNTST
|
||||
023B-A9 80 I 55 ( 2) DELAY LDA #$80 ; GET # OF LOOP CYCLES (DELAY LENGTH)
|
||||
023D-85 00 I 56 ( 2) STA DURAT
|
||||
023F-A5 01 I 57 ( 3) DL1 LDA DIFCLT ; MULTIPLY DIFFICULTY COUNTER
|
||||
0241-0A I 58 ( 2) ASL A ; BY FOUR TO DETERMINE DELAY
|
||||
0242-0A I 59 ( 2) ASL A ; LENGTH.
|
||||
0243-AA I 60 ( 2) TAX
|
||||
0244-26 02 I 61 ( 5) DL2 ROL DNTST ; DELAY ACCORDING TO DIFCLT.
|
||||
0246-66 02 I 62 ( 5) ROR DNTST
|
||||
0248-CA I 63 ( 2) DEX
|
||||
0249-D0 F9 I 64 (2**) BNE DL2 ; LOOP UNTIL COUNT = 0
|
||||
024B-A5 02 I 65 ( 3) LDA DNTST ; GET KEY DOWN FLAG.
|
||||
024D-D0 05 I 66 (2**) BNE NOTST ; IF KEY WAS DOWN AT BEGINNING OF
|
||||
024F- I 67 ; DELAY, DON'T TEST IT.
|
||||
024F-2C 01 CC I 68 ( 4) BIT PORT3A ; CHECK KEY STROBE
|
||||
0252-10 19 I 69 (2**) BPL HIT ; KEY HAS CLOSED DURING DELAY: HIT.
|
||||
0254-C6 00 I 70 ( 5) NOTST DEC DURAT ; COUNT DELAY LOOP DOWN.
|
||||
0256-D0 E7 I 71 (2**) BNE DL1 ; LOOP IF NOT 0.
|
||||
0258-C8 I 72 ( 2) INY ; INCREMENT MAIN SPIN COUNTER.
|
||||
0259-D0 B9 I 73 (2**) BNE LOOP ; IF 32 LOOPS NOT DONE, DO NEXT LOOP EASIER
|
||||
025B-A6 01 I 74 ( 3) LDX DIFCLT ; NO HITS THIS TIME, MAKE NEXT EASIER.
|
||||
025D-E8 I 75 ( 2) INX
|
||||
025E-8A I 76 ( 2) TXA ; MAKE SURE DIFFICULTY DOES NOT
|
||||
025F-C9 10 I 77 ( 2) CMP #16 ; EXCEED 15.
|
||||
0261-D0 02 I 78 (2**) BNE OK
|
||||
0263-A9 0F I 79 ( 2) LDA #15
|
||||
0265-85 01 I 80 ( 2) OK STA DIFCLT
|
||||
0267-20 82 02 I 81 ( 6) JSR WAIT ; PAUSE A BIT
|
||||
026A-4C 12 02 I 82 ( 3) JMP NWGME ; START NEW ROUND.
|
||||
026D-20 82 02 I 83 ( 6) HIT JSR WAIT ; PAUSE A BIT.
|
||||
0270-C6 01 I 84 ( 5) DEC DIFCLT ; MAKE NEXT GAME HARDER.
|
||||
0272-D0 9E I 85 (2**) BNE NWGME ; IF DIFFICULTY NOT 0 (HARDEST), PLAY NEXT GAME.
|
||||
0274-A9 FF I 86 ( 2) LDA #$FF ; PLAYER HAS MADE IT TO TOP
|
||||
0276-8D 01 C0 I 87 ( 4) STA PORT1A ; DIFFICULTY LEVEL, LIGHT ALL LEDS.
|
||||
0279-8D 00 C0 I 88 ( 4) STA PORT1B
|
||||
027C-20 82 02 I 89 ( 6) JSR WAIT ; PAUSE A BIT.
|
||||
027F-4C 00 02 I 90 ( 3) JMP START ; PLAY ANOTHER GAME.
|
||||
0282- I 91 ;
|
||||
0282- I 92 ; SUBROUTINE 'WAIT'
|
||||
0282- I 93 ; SHORT DELAY.
|
||||
0282- I 94 ;
|
||||
0282-A0 FF I 95 ( 2) WAIT LDY #$FF
|
||||
0284-A2 FF I 96 ( 2) LP1 LDX #$FF
|
||||
0286-66 00 I 97 ( 5) LP2 ROR DURAT
|
||||
0288-26 00 I 98 ( 5) ROL DURAT
|
||||
028A-66 00 I 99 ( 5) ROR DURAT
|
||||
028C-26 00 I 100 ( 5) ROL DURAT
|
||||
028E-CA I 101 ( 2) DEX
|
||||
028F-D0 F5 I 102 (2**) BNE LP2
|
||||
0291-88 I 103 ( 2) DEY
|
||||
0292-D0 F0 I 104 (2**) BNE LP1
|
||||
0294-60 I 105 ( 6) RTS
|
||||
0295- I 106 ;
|
||||
0295- I 107 ; TABLE OF PATTERNS TO BE SENT TO LED MATRIX AT EACH LOOP COUNTM SET FOR
|
||||
0295- I 108 ; CLOCKWISE ROTATION STARTING AT LED #1.
|
||||
0295- I 109 ;
|
||||
0295-01 02 04 20
|
||||
00 80 40 08 I 110 LTABLE .HS 01.02.04.20.00.80.40.08
|
||||
029D- I 111
|
||||
029D- I 112 ;
|
||||
029D- I 113 ; TABLE OF PATTERNS TO BE SENT TO KEYBOARD TO TEST IF LEDS ARE ON AT EACH
|
||||
029D- I 114 ; LOOP COUNT.
|
||||
029D- I 115 ;
|
||||
029D-01 02 03 06
|
||||
09 08 07 04 I 116 KYTBL .HS 01.02.03.06.09.08.07.04
|
@ -0,0 +1,4 @@
|
||||
@echo off
|
||||
sbasm.py spinner.asm
|
||||
type spinner.list
|
||||
pause
|
116
projects/GB-001 Game Board/software/common/CH06-Spinner/game.asm
Normal file
116
projects/GB-001 Game Board/software/common/CH06-Spinner/game.asm
Normal file
@ -0,0 +1,116 @@
|
||||
; 'SPINNER'
|
||||
; PROGRAM TO TEST REACTION TIME OF PLAYER. BLIP OF LIGHT SPINS AROUND EDGE OF
|
||||
; 3X3 LED MATRIX, AND USER MUST PRESS CORRESPONDING KEY. IF, AFTER A NUMBER OF
|
||||
; SPINS, CORRECT KEY HAS NOT BEEN PRESSED, BLIP SPINS SLOWER. IF CORRECT KEY
|
||||
; HAS BEEN PRESSED, BLIP SPINS FASTER. ALL LEDS LIGHT WHEN SUCCESSFUL KEYPRESS
|
||||
; OCCURS ON MAXIMUM SPEED.
|
||||
;
|
||||
; I/O:
|
||||
;
|
||||
DDR1A .EQ VIA1+3 ; PORT A DATA DIRECTION REGISTER
|
||||
DDR1B .EQ VIA1+2 ; PORT B DATA DIRECTION REGISTER
|
||||
PORT1A .EQ VIA1+1 ; PORT A
|
||||
PORT2 .EQ VIA1
|
||||
PORT1B .EQ VIA1 ; PORT B
|
||||
DDR3A .EQ VIA3+3 ; PORT A DATA DIRECTION REGISTER
|
||||
DDR3B .EQ VIA3+2 ; PORT B DATA DIRECTION REGISTER
|
||||
PORT3B .EQ VIA3 ; PORT B
|
||||
PORT3A .EQ VIA3+1 ; PORT A
|
||||
;
|
||||
; VARIABLE STORAGE.
|
||||
;
|
||||
ZP .EQ $00
|
||||
DURAT .EQ ZP ; DURATION OF INTER-MOVEMENT DELAY.
|
||||
DIFCLT .EQ ZP+1 ; DIFFICULTY LEVEL.
|
||||
DNTST .EQ ZP+2 ; SET TO $01 IF KEY DOWN AT START OF
|
||||
; INTER-MOVEMENT DELAY.
|
||||
;
|
||||
; MAIN PROGRAM
|
||||
;
|
||||
START LDA #$FF ; SET I/O REGISTERS.
|
||||
STA DDR1A
|
||||
STA DDR1B
|
||||
STA DDR3B
|
||||
LDA #8
|
||||
STA DIFCLT ; SET DIFFICULTY
|
||||
STA DDR3A ; SET KEYSTROBE PORT.
|
||||
NWGME LDY #0 ; RESET LOOP/BLIP COUNTER.
|
||||
LOOP LDA #0
|
||||
STA DNTST ; CLEAR KEYDOWN INDICATOR.
|
||||
STA PORT1B ; CLEAR HI LED PORT.
|
||||
TYA ; USE LOWER 3 BITS OF MAIN COUNTER
|
||||
AND #$07 ; AS INDEX TO FIND LED PATTERN
|
||||
TAX ; IN TABLE OF PATTERNS.
|
||||
LDA LTABLE,X ; GET PATTERN FOR LED TO BE TURNED ON
|
||||
STA PORT1A ; STORE IN LED PORT.
|
||||
BNE CHECK ; IF PATTERN <> 0, SKIP.
|
||||
LDA #1 ; PATTERN=0, SO SET HI BIT.
|
||||
STA PORT1B
|
||||
CHECK LDA KYTBL,X ; GET KEY# TO TEST FOR.
|
||||
STA PORT3B ; STORE IN KEYPORT
|
||||
BIT PORT3A ; STROBE HI?
|
||||
BMI DELAY ; IF NOT, SKIP.
|
||||
INVALD LDA #01 ; STROBE HI; SET KEY DOWN MARKER.
|
||||
STA DNTST
|
||||
DELAY LDA #$80 ; GET # OF LOOP CYCLES (DELAY LENGTH)
|
||||
STA DURAT
|
||||
DL1 LDA DIFCLT ; MULTIPLY DIFFICULTY COUNTER
|
||||
ASL A ; BY FOUR TO DETERMINE DELAY
|
||||
ASL A ; LENGTH.
|
||||
TAX
|
||||
DL2 ROL DNTST ; DELAY ACCORDING TO DIFCLT.
|
||||
ROR DNTST
|
||||
DEX
|
||||
BNE DL2 ; LOOP UNTIL COUNT = 0
|
||||
LDA DNTST ; GET KEY DOWN FLAG.
|
||||
BNE NOTST ; IF KEY WAS DOWN AT BEGINNING OF
|
||||
; DELAY, DON'T TEST IT.
|
||||
BIT PORT3A ; CHECK KEY STROBE
|
||||
BPL HIT ; KEY HAS CLOSED DURING DELAY: HIT.
|
||||
NOTST DEC DURAT ; COUNT DELAY LOOP DOWN.
|
||||
BNE DL1 ; LOOP IF NOT 0.
|
||||
INY ; INCREMENT MAIN SPIN COUNTER.
|
||||
BNE LOOP ; IF 32 LOOPS NOT DONE, DO NEXT LOOP EASIER
|
||||
LDX DIFCLT ; NO HITS THIS TIME, MAKE NEXT EASIER.
|
||||
INX
|
||||
TXA ; MAKE SURE DIFFICULTY DOES NOT
|
||||
CMP #16 ; EXCEED 15.
|
||||
BNE OK
|
||||
LDA #15
|
||||
OK STA DIFCLT
|
||||
JSR WAIT ; PAUSE A BIT
|
||||
JMP NWGME ; START NEW ROUND.
|
||||
HIT JSR WAIT ; PAUSE A BIT.
|
||||
DEC DIFCLT ; MAKE NEXT GAME HARDER.
|
||||
BNE NWGME ; IF DIFFICULTY NOT 0 (HARDEST), PLAY NEXT GAME.
|
||||
LDA #$FF ; PLAYER HAS MADE IT TO TOP
|
||||
STA PORT1A ; DIFFICULTY LEVEL, LIGHT ALL LEDS.
|
||||
STA PORT1B
|
||||
JSR WAIT ; PAUSE A BIT.
|
||||
JMP START ; PLAY ANOTHER GAME.
|
||||
;
|
||||
; SUBROUTINE 'WAIT'
|
||||
; SHORT DELAY.
|
||||
;
|
||||
WAIT LDY #$FF
|
||||
LP1 LDX #$FF
|
||||
LP2 ROR DURAT
|
||||
ROL DURAT
|
||||
ROR DURAT
|
||||
ROL DURAT
|
||||
DEX
|
||||
BNE LP2
|
||||
DEY
|
||||
BNE LP1
|
||||
RTS
|
||||
;
|
||||
; TABLE OF PATTERNS TO BE SENT TO LED MATRIX AT EACH LOOP COUNTM SET FOR
|
||||
; CLOCKWISE ROTATION STARTING AT LED #1.
|
||||
;
|
||||
LTABLE .HS 01.02.04.20.00.80.40.08
|
||||
|
||||
;
|
||||
; TABLE OF PATTERNS TO BE SENT TO KEYBOARD TO TEST IF LEDS ARE ON AT EACH
|
||||
; LOOP COUNT.
|
||||
;
|
||||
KYTBL .HS 01.02.03.06.09.08.07.04
|
@ -0,0 +1,16 @@
|
||||
.CR 6502
|
||||
.TF spinner.hex,INT
|
||||
.LF spinner.list
|
||||
;
|
||||
; SPINNER IS A REACTION TIMING GAME USING '6502 GAMES' HARDWARE, AN LED CHASES
|
||||
; AROUND THE LED CUBE AND YOU SHOULD TRY TO HIT THE CORRESPONDING BUTTON.
|
||||
; BOARD SHOULD ; BE JUMPERED WITH VIA CHIPS AT THE ADDRESSES SPECIFIED BELOW.
|
||||
; OTHER THAN THAT THE CODE IS SHOULD BE UNCHANGED FROM THE BOOK THOUGH THERE
|
||||
; WILL BE SOME DIFFERENCES DUE TO ASSEMBLER USED.
|
||||
;
|
||||
VIA1 .EQ $C000
|
||||
VIA3 .EQ $CC00
|
||||
|
||||
.OR $0200
|
||||
.TA $0200
|
||||
BEGIN .IN game.asm
|
@ -0,0 +1,12 @@
|
||||
:10020000A9FF8D03C08D02C08D02CCA90885018D88
|
||||
:1002100003CCA000A90085028D00C0982907AABDC3
|
||||
:1002200095028D01C0D005A9018D00C0BD9D028D34
|
||||
:1002300000CC2C01CC3004A9018502A9808500A541
|
||||
:10024000010A0AAA26026602CAD0F9A502D0052C24
|
||||
:1002500001CC1019C600D0E7C8D0B9A601E88AC9F8
|
||||
:1002600010D002A90F85012082024C1202208202C6
|
||||
:10027000C601D09EA9FF8D01C08D00C02082024C16
|
||||
:100280000002A0FFA2FF6600260066002600CAD07A
|
||||
:10029000F588D0F0600102042000804008010203CC
|
||||
:0502A000060908070437
|
||||
:00000001FF
|
@ -0,0 +1,130 @@
|
||||
0000- 4 ;
|
||||
0000- 5 ; HEX GUESSING GAME USING '6502 GAMES' HARDWARE. BOARD SHOULD BE JUMPERED WITH
|
||||
0000- 6 ; VIA CHIPS AT THE ADDRESSES SPECIFIED BELOW. OTHER THAN THAT THE CODE IS SHOULD
|
||||
0000- 7 ; BE UNCHANGED FROM THE BOOK THOUGH THERE WILL BE SOME DIFFERENCES DUE TO
|
||||
0000- 8 ; ASSEMBLER USED.
|
||||
0000- 9 ;
|
||||
C000- 10 VIA1 .EQ $C000
|
||||
CC00- 11 VIA3 .EQ $CC00
|
||||
0000- 12
|
||||
0200- 13 .OR $0200
|
||||
0200- 14 .TA $0200
|
||||
0200- 15 BEGIN .IN game.asm
|
||||
0200- I 1 ; 'SPINNER'
|
||||
0200- I 2 ; PROGRAM TO TEST REACTION TIME OF PLAYER. BLIP OF LIGHT SPINS AROUND EDGE OF
|
||||
0200- I 3 ; 3X3 LED MATRIX, AND USER MUST PRESS CORRESPONDING KEY. IF, AFTER A NUMBER OF
|
||||
0200- I 4 ; SPINS, CORRECT KEY HAS NOT BEEN PRESSED, BLIP SPINS SLOWER. IF CORRECT KEY
|
||||
0200- I 5 ; HAS BEEN PRESSED, BLIP SPINS FASTER. ALL LEDS LIGHT WHEN SUCCESSFUL KEYPRESS
|
||||
0200- I 6 ; OCCURS ON MAXIMUM SPEED.
|
||||
0200- I 7 ;
|
||||
0200- I 8 ; I/O:
|
||||
0200- I 9 ;
|
||||
C003- I 10 DDR1A .EQ VIA1+3 ; PORT A DATA DIRECTION REGISTER
|
||||
C002- I 11 DDR1B .EQ VIA1+2 ; PORT B DATA DIRECTION REGISTER
|
||||
C001- I 12 PORT1A .EQ VIA1+1 ; PORT A
|
||||
C000- I 13 PORT2 .EQ VIA1
|
||||
C000- I 14 PORT1B .EQ VIA1 ; PORT B
|
||||
CC03- I 15 DDR3A .EQ VIA3+3 ; PORT A DATA DIRECTION REGISTER
|
||||
CC02- I 16 DDR3B .EQ VIA3+2 ; PORT B DATA DIRECTION REGISTER
|
||||
CC00- I 17 PORT3B .EQ VIA3 ; PORT B
|
||||
CC01- I 18 PORT3A .EQ VIA3+1 ; PORT A
|
||||
0200- I 19 ;
|
||||
0200- I 20 ; VARIABLE STORAGE.
|
||||
0200- I 21 ;
|
||||
0000- I 22 ZP .EQ $00
|
||||
0000- I 23 DURAT .EQ ZP ; DURATION OF INTER-MOVEMENT DELAY.
|
||||
0001- I 24 DIFCLT .EQ ZP+1 ; DIFFICULTY LEVEL.
|
||||
0002- I 25 DNTST .EQ ZP+2 ; SET TO $01 IF KEY DOWN AT START OF
|
||||
0200- I 26 ; INTER-MOVEMENT DELAY.
|
||||
0200- I 27 ;
|
||||
0200- I 28 ; MAIN PROGRAM
|
||||
0200- I 29 ;
|
||||
0200-A9 FF I 30 ( 2) START LDA #$FF ; SET I/O REGISTERS.
|
||||
0202-8D 03 C0 I 31 ( 4) STA DDR1A
|
||||
0205-8D 02 C0 I 32 ( 4) STA DDR1B
|
||||
0208-8D 02 CC I 33 ( 4) STA DDR3B
|
||||
020B-A9 08 I 34 ( 2) LDA #8
|
||||
020D-85 01 I 35 ( 2) STA DIFCLT ; SET DIFFICULTY
|
||||
020F-8D 03 CC I 36 ( 4) STA DDR3A ; SET KEYSTROBE PORT.
|
||||
0212-A0 00 I 37 ( 2) NWGME LDY #0 ; RESET LOOP/BLIP COUNTER.
|
||||
0214-A9 00 I 38 ( 2) LOOP LDA #0
|
||||
0216-85 02 I 39 ( 2) STA DNTST ; CLEAR KEYDOWN INDICATOR.
|
||||
0218-8D 00 C0 I 40 ( 4) STA PORT1B ; CLEAR HI LED PORT.
|
||||
021B-98 I 41 ( 2) TYA ; USE LOWER 3 BITS OF MAIN COUNTER
|
||||
021C-29 07 I 42 ( 2) AND #$07 ; AS INDEX TO FIND LED PATTERN
|
||||
021E-AA I 43 ( 2) TAX ; IN TABLE OF PATTERNS.
|
||||
021F-BD 95 02 I 44 ( 4*) LDA LTABLE,X ; GET PATTERN FOR LED TO BE TURNED ON
|
||||
0222-8D 01 C0 I 45 ( 4) STA PORT1A ; STORE IN LED PORT.
|
||||
0225-D0 05 I 46 (2**) BNE CHECK ; IF PATTERN <> 0, SKIP.
|
||||
0227-A9 01 I 47 ( 2) LDA #1 ; PATTERN=0, SO SET HI BIT.
|
||||
0229-8D 00 C0 I 48 ( 4) STA PORT1B
|
||||
022C-BD 9D 02 I 49 ( 4*) CHECK LDA KYTBL,X ; GET KEY# TO TEST FOR.
|
||||
022F-8D 00 CC I 50 ( 4) STA PORT3B ; STORE IN KEYPORT
|
||||
0232-2C 01 CC I 51 ( 4) BIT PORT3A ; STROBE HI?
|
||||
0235-30 04 I 52 (2**) BMI DELAY ; IF NOT, SKIP.
|
||||
0237-A9 01 I 53 ( 2) INVALD LDA #01 ; STROBE HI; SET KEY DOWN MARKER.
|
||||
0239-85 02 I 54 ( 2) STA DNTST
|
||||
023B-A9 80 I 55 ( 2) DELAY LDA #$80 ; GET # OF LOOP CYCLES (DELAY LENGTH)
|
||||
023D-85 00 I 56 ( 2) STA DURAT
|
||||
023F-A5 01 I 57 ( 3) DL1 LDA DIFCLT ; MULTIPLY DIFFICULTY COUNTER
|
||||
0241-0A I 58 ( 2) ASL A ; BY FOUR TO DETERMINE DELAY
|
||||
0242-0A I 59 ( 2) ASL A ; LENGTH.
|
||||
0243-AA I 60 ( 2) TAX
|
||||
0244-26 02 I 61 ( 5) DL2 ROL DNTST ; DELAY ACCORDING TO DIFCLT.
|
||||
0246-66 02 I 62 ( 5) ROR DNTST
|
||||
0248-CA I 63 ( 2) DEX
|
||||
0249-D0 F9 I 64 (2**) BNE DL2 ; LOOP UNTIL COUNT = 0
|
||||
024B-A5 02 I 65 ( 3) LDA DNTST ; GET KEY DOWN FLAG.
|
||||
024D-D0 05 I 66 (2**) BNE NOTST ; IF KEY WAS DOWN AT BEGINNING OF
|
||||
024F- I 67 ; DELAY, DON'T TEST IT.
|
||||
024F-2C 01 CC I 68 ( 4) BIT PORT3A ; CHECK KEY STROBE
|
||||
0252-10 19 I 69 (2**) BPL HIT ; KEY HAS CLOSED DURING DELAY: HIT.
|
||||
0254-C6 00 I 70 ( 5) NOTST DEC DURAT ; COUNT DELAY LOOP DOWN.
|
||||
0256-D0 E7 I 71 (2**) BNE DL1 ; LOOP IF NOT 0.
|
||||
0258-C8 I 72 ( 2) INY ; INCREMENT MAIN SPIN COUNTER.
|
||||
0259-D0 B9 I 73 (2**) BNE LOOP ; IF 32 LOOPS NOT DONE, DO NEXT LOOP EASIER
|
||||
025B-A6 01 I 74 ( 3) LDX DIFCLT ; NO HITS THIS TIME, MAKE NEXT EASIER.
|
||||
025D-E8 I 75 ( 2) INX
|
||||
025E-8A I 76 ( 2) TXA ; MAKE SURE DIFFICULTY DOES NOT
|
||||
025F-C9 10 I 77 ( 2) CMP #16 ; EXCEED 15.
|
||||
0261-D0 02 I 78 (2**) BNE OK
|
||||
0263-A9 0F I 79 ( 2) LDA #15
|
||||
0265-85 01 I 80 ( 2) OK STA DIFCLT
|
||||
0267-20 82 02 I 81 ( 6) JSR WAIT ; PAUSE A BIT
|
||||
026A-4C 12 02 I 82 ( 3) JMP NWGME ; START NEW ROUND.
|
||||
026D-20 82 02 I 83 ( 6) HIT JSR WAIT ; PAUSE A BIT.
|
||||
0270-C6 01 I 84 ( 5) DEC DIFCLT ; MAKE NEXT GAME HARDER.
|
||||
0272-D0 9E I 85 (2**) BNE NWGME ; IF DIFFICULTY NOT 0 (HARDEST), PLAY NEXT GAME.
|
||||
0274-A9 FF I 86 ( 2) LDA #$FF ; PLAYER HAS MADE IT TO TOP
|
||||
0276-8D 01 C0 I 87 ( 4) STA PORT1A ; DIFFICULTY LEVEL, LIGHT ALL LEDS.
|
||||
0279-8D 00 C0 I 88 ( 4) STA PORT1B
|
||||
027C-20 82 02 I 89 ( 6) JSR WAIT ; PAUSE A BIT.
|
||||
027F-4C 00 02 I 90 ( 3) JMP START ; PLAY ANOTHER GAME.
|
||||
0282- I 91 ;
|
||||
0282- I 92 ; SUBROUTINE 'WAIT'
|
||||
0282- I 93 ; SHORT DELAY.
|
||||
0282- I 94 ;
|
||||
0282-A0 FF I 95 ( 2) WAIT LDY #$FF
|
||||
0284-A2 FF I 96 ( 2) LP1 LDX #$FF
|
||||
0286-66 00 I 97 ( 5) LP2 ROR DURAT
|
||||
0288-26 00 I 98 ( 5) ROL DURAT
|
||||
028A-66 00 I 99 ( 5) ROR DURAT
|
||||
028C-26 00 I 100 ( 5) ROL DURAT
|
||||
028E-CA I 101 ( 2) DEX
|
||||
028F-D0 F5 I 102 (2**) BNE LP2
|
||||
0291-88 I 103 ( 2) DEY
|
||||
0292-D0 F0 I 104 (2**) BNE LP1
|
||||
0294-60 I 105 ( 6) RTS
|
||||
0295- I 106 ;
|
||||
0295- I 107 ; TABLE OF PATTERNS TO BE SENT TO LED MATRIX AT EACH LOOP COUNTM SET FOR
|
||||
0295- I 108 ; CLOCKWISE ROTATION STARTING AT LED #1.
|
||||
0295- I 109 ;
|
||||
0295-01 02 04 20
|
||||
00 80 40 08 I 110 LTABLE .HS 01.02.04.20.00.80.40.08
|
||||
029D- I 111
|
||||
029D- I 112 ;
|
||||
029D- I 113 ; TABLE OF PATTERNS TO BE SENT TO KEYBOARD TO TEST IF LEDS ARE ON AT EACH
|
||||
029D- I 114 ; LOOP COUNT.
|
||||
029D- I 115 ;
|
||||
029D-01 02 03 06
|
||||
09 08 07 04 I 116 KYTBL .HS 01.02.03.06.09.08.07.04
|
Loading…
Reference in New Issue
Block a user