RC-Project-Board/projects/GB-001 Game Board/software/common/CH07-SlotMachine/slot_machine.list
Tor-Eirik Bakke Lunde 6befe9076f Chapter 7
2020-03-07 15:38:00 +01:00

324 lines
21 KiB
Plaintext

0000- 4 ;
0000- 5 ; SLOT MACHINE GAME FOR THE '6502 GAMES' HARDWARE, BOARD SHOULD BE JUMPERED
0000- 6 ; WITH VIA CHIPS AT THE ADDRESSES SPECIFIED BELOW. OTHER THAN THAT THE CODE
0000- 7 ; IS SHOULD BE UNCHANGED FROM THE BOOK THOUGH THERE WILL BE SOME DIFFERENCES
0000- 8 ; DUE TO 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 ; 'SLOT MACHINE'
0200- I 2 ; SLOT MACHINE SIMULATOR PROGRAM, PRESS ANY KEY TO START 'SPIN'. SCORE
0200- I 3 ; DETERMINED BY ARRAY 'SCORTB'. 8 POINTS INITIAL SCORE, ONE POINT PENALTY
0200- I 4 ; FOR EACH BAD SPIN.
0200- I 5
0200- I 6 ;
0200- I 7 ; I/O:
0200- I 8 ;
C000- I 9 PORT1B .EQ VIA1 ; PORT B
C001- I 10 PORT1A .EQ VIA1+1 ; PORT A
C002- I 11 DDR1B .EQ VIA1+2 ; PORT B DATA DIRECTION REGISTER
C003- I 12 DDR1A .EQ VIA1+3 ; PORT A DATA DIRECTION REGISTER
C004- I 13 T1CL .EQ VIA1+4
0200- I 14
CC00- I 15 PORT3B .EQ VIA3 ; PORT B
CC01- I 16 PORT3A .EQ VIA3+1 ; PORT A
CC02- I 17 DDR3B .EQ VIA3+2 ; PORT B DATA DIRECTION REGISTER
CC03- I 18 DDR3A .EQ VIA3+3 ; PORT A DATA DIRECTION REGISTER
0200- I 19
0200- I 20 ;
0200- I 21 ; VARIABLE STORAGE.
0200- I 22 ;
0000- I 23 ZP .EQ $00
0000- I 24 TEMP .EQ ZP ; TEMPORARY STORAGE.
0001- I 25 SCORTP .EQ ZP+1 ; TEMPORARY SCORE STORAGE
0002- I 26 SCORE .EQ ZP+2 ; SCORE.
0003- I 27 DUR .EQ ZP+3 ; DURATION OF TONES.
0004- I 28 FREQ .EQ ZP+4
0005- I 29 SPEEDS .EQ ZP+5 ; SPEEDS OF REVOLUTION FOR LEDS IN COLUMNS
0008- I 30 INDX .EQ ZP+8 ; DELAY COUNTERS FOR LED REVOLUTIONS.
000B- I 31 INCR .EQ ZP+11 ; POINTERS FOR LED POSITIONS:
0200- I 32 ; USED TO FETCH PATTERNS OUT OF TABLES.
000E- I 33 LTMSK .EQ ZP+14 ; PATTERNS FOR LIT LEDS
0011- I 34 VALUES .EQ ZP+17 ; NUMBER OF LIT LEDS IN EACH ROW.
0014- I 35 RND .EQ ZP+20 ; SCRATCHPAD FOR RND # GENERATOR.
0200- I 36
0200- I 37 ;
0200- I 38 ; MAIN PROGRAM
0200- I 39 ;
0100- I 40 GETKEY .EQ $100
0200- I 41
0200-A9 FF I 42 ( 2) LDA #$FF ; SET UP PORTS.
0202-8D 03 C0 I 43 ( 4) STA DDR1A
0205-8D 02 C0 I 44 ( 4) STA DDR1B
0208-8D 02 CC I 45 ( 4) STA DDR3B
020B-AD 04 C0 I 46 ( 4) LDA T1CL ; GET SEED FOR RANDOM # GENERATOR.
020E-85 15 I 47 ( 2) STA RND+1
0210-A9 08 I 48 ( 2) START LDA #8 ; INITIAL SCORE IS EIGHT.
0212-85 02 I 49 ( 2) STA SCORE
0214-A8 I 50 ( 2) TAY ; SHOW INITIAL SCORE
0215-20 3D 03 I 51 ( 6) JSR LIGHT
0218-20 00 01 I 52 ( 6) KEY JSR GETKEY ; ANY KEY PRESSED STARTS PROGRAM.
021B-20 27 02 I 53 ( 6) JSR DISPLY ; SPIN WHEELS
021E-20 A7 02 I 54 ( 6) JSR EVAL ; CHECK SCORE AND SHOW IT
0221-A5 02 I 55 ( 3) LDA SCORE
0223-D0 F3 I 56 (2**) BNE KEY ; IF SCORE <> 0, GET NEXT PLAY.
0225-F0 E9 I 57 (2**) BEQ START ; IF SCORE = 0; RESTART.
0227- I 58
0227- I 59 ;
0227- I 60 ; SUBROUTINE 'DISPLY'
0227- I 61 ; SUBROUTINE TO DISPLAY 'SPINNING' LEDS, FIND COMBINATION USED TO
0227- I 62 ; DETERMINE SCORE.
0227- I 63 ;
005A- I 64 LOLIM = 90
0087- I 65 HILIM = 135
0050- I 66 SPDPRM = 80
0227-A9 00 I 67 ( 2) DISPLY LDA #0 ; RESET POINTERS.
0229-85 0B I 68 ( 2) STA INCR
022B-85 0C I 69 ( 2) STA INCR+1
022D-85 0D I 70 ( 2) STA INCR+2
022F-A0 02 I 71 ( 2) LDRND LDY #2 ; SET INDEX FOR 3 ITERATIONS.
0231-20 80 03 I 72 ( 6) GETRND JSR RANDOM ; GET RANDOM #.
0234-C9 87 I 73 ( 2) CMP #HILIM ; TOO LARGE?
0236-B0 F9 I 74 (2**) BCS GETRND ; IF SO, GET ANOTHER.
0238-C9 5A I 75 ( 2) CMP #LOLIM ; TOO SMALL?
023A-90 F5 I 76 (2**) BCC GETRND ; IF SO, GET ANOTHER.
023C-99 08 00 I 77 ( 5) STA INDX,Y ; SAVE IN LOOP INDEXES AND
023F-99 05 00 I 78 ( 5) STA SPEEDS,Y ; LOOP SPEED COUNTERS.
0242-88 I 79 ( 2) DEY
0243-10 EC I 80 (2**) BPL GETRND ; GET NEXT RND #.
0245-A2 02 I 81 ( 2) UPDATE LDX #2 ; SET INDEX FOR THREE ITERATIONS.
0247-B4 05 I 82 ( 4) UPDTLP LDY SPEEDS,X ; IS SPEED(X) = 0?
0249-F0 44 I 83 (2**) BEQ NXTUPD ; IF SO, DO NEXT UPDATE.
024B-D6 08 I 84 ( 6) DEC INDX,X ; DECREMENT LOOP INDEX(X)
024D-D0 40 I 85 (2**) BNE NXTUPD ; IF LOOPINDEX(X) <> 0, DO NEXT UPDATE.
024F-B4 0B I 86 ( 4) LDY INCR,X ; INCREMENT POINTER(X).
0251-C8 I 87 ( 2) INY
0252-C0 03 I 88 ( 2) CPY #3 ; POINTER = 3?
0254-D0 02 I 89 (2**) BNE NORST ; IF NOT SKIP...
0256-A0 00 I 90 ( 2) LDY #0 ; ... RESET OF POINTER TO 0.
0258-94 0B I 91 ( 4) NORST STY INCR,X ; RESTORE POINTER(X).
025A-86 00 I 92 ( 3) STX TEMP ; MULTIPLY X BY 3 FOR ARRAY ACCESS.
025C-8A I 93 ( 2) TXA
025D-0A I 94 ( 2) ASL A
025E-18 I 95 ( 2) CLC
025F-65 00 I 96 ( 3) ADC TEMP
0261-75 0B I 97 ( 4) ADC INCR,X ; ADD COLUMN # TO PTR(X) FOR ROW#.
0263-A8 I 98 ( 2) TAY ; TRANSFER TO Y FOR INDEXING.
0264-B9 93 03 I 99 ( 4*) LDA LTABLE,Y ; GET PATTERN FOR LED.
0267-95 0E I 100 ( 4) STA LTMSK,X ; STORE IN LIGHT MASK(X).
0269-B4 05 I 101 ( 4) SPDUPD LDY SPEEDS,X ; INCREMENT SPEED (X).
026B-C8 I 102 ( 2) INY
026C-94 05 I 103 ( 4) STY SPEEDS,X ; RESTORE.
026E-94 08 I 104 ( 4) STY INDX,X ; RESET LOOP INDEX(X).
0270-A9 00 I 105 ( 2) LEDUPD LDA #0 ; UPDATE LIGHTS.
0272-8D 00 C0 I 106 ( 4) STA PORT1B ; RESET LED #9
0275-A5 10 I 107 ( 3) LDA LTMSK+2 ; COMBINE PATTERN FOR OUTPUT.
0277-D0 07 I 108 (2**) BNE OFFLD9 ; IF MASK#3 <> 0, LED 9 OFF.
0279-A9 01 I 109 ( 2) LDA #01 ; TURN ON LED 9.
027B-8D 00 C0 I 110 ( 4) STA PORT1B
027E-A9 00 I 111 ( 2) LDA #0 ; RESET A SO PATTERN WON'T BE BAD.
0280-05 0E I 112 ( 3) OFFLD9 ORA LTMSK ; COMBINE REST OF PATTERNS.
0282-05 0F I 113 ( 3) ORA LTMSK+1
0284-8D 01 C0 I 114 ( 4) STA PORT1A ; SET LIGHTS.
0287-AD 00 CC I 115 ( 4) LDA PORT3B ; TOGGLE SPEAKER.
028A-49 FF I 116 ( 2) EOR #$FF
028C-8D 00 CC I 117 ( 4) STA PORT3B
028F-CA I 118 ( 2) NXTUPD DEX ; DECREMENT X FOR NEXT UPDATE.
0290-10 B5 I 119 (2**) BPL UPDTLP ; IF X >= 0, DO NEXT UPDATE.
0292-A0 50 I 120 ( 2) LDY #SPDPRM ; DELAY A BIT TO SLOW
0294-88 I 121 ( 2) WAIT DEY ; FLASHING OF LEDS.
0295-D0 FD I 122 (2**) BNE WAIT
0297-A5 05 I 123 ( 3) LDA SPEEDS ; CHECK IF ALL COLUMNS OF LEDS STOPPED.
0299-05 06 I 124 ( 3) ORA SPEEDS+1
029B-05 07 I 125 ( 3) ORA SPEEDS+2
029D-D0 A6 I 126 (2**) BNE UPDATE ; IF NOT, DO NEXT SEQUENCE OF UPDATES.
029F-A9 FF I 127 ( 2) LDA #$FF
02A1-85 03 I 128 ( 2) STA DUR ; DELAY TO SHOW USER PATTERN.
02A3-20 30 03 I 129 ( 6) JSR DELAY
02A6-60 I 130 ( 6) RTS ; ALL LEDS STOPPED, DONE.
02A7- I 131
02A7- I 132 ;
02A7- I 133 ; SUBROUTINE 'EVAL'
02A7- I 134 ; SUBROUTINE TO EVALUATE PRODUCT OF SPIN, AND DISPLAY SCORE WITH TONES FOR
02A7- I 135 ; WIN, LOSE, WIN+ENDGAME AND LOST+ENDGAME.
02A7- I 136 ;
0020- I 137 HITONE = $20
00F0- I 138 LOTONE = $F0
02A7-A9 00 I 139 ( 2) EVAL LDA #0 ; RESET VARIABLES.
02A9-85 11 I 140 ( 2) STA VALUES
02AB-85 12 I 141 ( 2) STA VALUES+1
02AD-85 13 I 142 ( 2) STA VALUES+2
02AF-85 01 I 143 ( 2) STA SCORTP
02B1-A0 02 I 144 ( 2) LDY #2 ; SET INDEX Y FOR 3 ITERATIONS TO COUNT # OF
02B3- I 145 ; LEDS ON IN EACH ROW.
02B3-B6 0B I 146 ( 4) CNTLP LDX INCR,Y ; CHECK POINTER(Y), ADDING
02B5-F6 11 I 147 ( 6) INC VALUES,X ; UP # OF LEDS ON IN EACH ROW.
02B7-88 I 148 ( 2) DEY
02B8-10 F9 I 149 (2**) BPL CNTLP ; LOOP IF NOT DONE.
02BA-A2 02 I 150 ( 2) LDX #2 ; SET INDEX X FOR 3 ITERATIONS
02BC- I 151 ; OF LOOP TO FIND SCORE.
02BC-8A I 152 ( 2) SCORLP TXA ; MULTIPLY INDEX BY FOUR FOR ARRAY ROW ACCESS.
02BD-0A I 153 ( 2) ASL A
02BE-0A I 154 ( 2) ASL A
02BF-18 I 155 ( 2) CLC ; ADD # OF LEDS ON IN ROW(X) TO...
02C0-75 11 I 156 ( 4) ADC VALUES,X ; ... ARRIVE AT COLUMN ADDRESS IN ARRAY.
02C2-A8 I 157 ( 2) TAY ; USE AS INDEX
02C3-B9 9C 03 I 158 ( 4*) LDA SCORTB,Y ; GET SCORE FOR THIS SPIN.
02C6-18 I 159 ( 2) CLC
02C7-65 01 I 160 ( 3) ADC SCORTP ; ADD TO ANY PREVIOUS SCORES
02C9- I 161 ; ACCUMULATED IN THIS LOOP.
02C9-85 01 I 162 ( 2) STA SCORTP ; RESTORE
02CB-CA I 163 ( 2) DEX
02CC-10 EE I 164 (2**) BPL SCORLP ; LOOP IF NOT DONE
02CE-A9 60 I 165 ( 2) LDA #$60 ; SET UP DURATIONS FOR TONES.
02D0-85 03 I 166 ( 2) STA DUR
02D2-A5 01 I 167 ( 3) LDA SCORTP ; GET SCORE FOR THIS SPIN.
02D4-F0 34 I 168 (2**) BEQ LOSE ; IF SCORE IS 0, LOSE A POINT.
02D6-E6 02 I 169 ( 5) WIN INC SCORE ; RAISE OVERALL SCORE BY ONE.
02D8-A4 02 I 170 ( 3) LDY SCORE ; GET SCORE
02DA-C0 10 I 171 ( 2) CPY #16 ; WIN WITH 16 POINTS?
02DC-F0 10 I 172 (2**) BEQ WINEND ; YES; WIN+ENDGAME.
02DE-20 3D 03 I 173 ( 6) JSR LIGHT ; SHOW SCORE
02E1-A9 20 I 174 ( 2) LDA #HITONE ; PLAY HIGH BEEP.
02E3-20 64 03 I 175 ( 6) JSR TONE
02E6-20 30 03 I 176 ( 6) JSR DELAY ; SHORT DELAY.
02E9-C6 01 I 177 ( 5) DEC SCORTP ; DECREMENT SCORE TO BE ADDED TO...
02EB- I 178 ; OVERALL SCORE BY ONE.
02EB-D0 E9 I 179 (2**) BNE WIN ; LOOP IF SCORE TRANSFER NOT COMPLETE.
02ED-60 I 180 ( 6) RTS ; DONE, RETURN TO MAIN PROGRAM.
02EE-A9 FF I 181 ( 2) WINEND LDA #$FF ; TURN ALL LEDS ON TO SIGNAL WIN.
02F0-8D 01 C0 I 182 ( 4) STA PORT1A
02F3-8D 00 C0 I 183 ( 4) STA PORT1B
02F6-85 00 I 184 ( 2) STA TEMP ; SET FREQ PARAMETER FOR RISING WARBLE.
02F8-A9 00 I 185 ( 2) LDA #0
02FA-85 02 I 186 ( 2) STA SCORE ; CLEAR TO FLAG RESTART.
02FC-A9 04 I 187 ( 2) LDA #4
02FE-85 03 I 188 ( 2) STA DUR ; SHORT DURATION FOR INDIVIDUAL BEEPS IN WARBLE.
0300-A5 00 I 189 ( 3) RISE LDA TEMP ; GET FREQUENCY...
0302-20 64 03 I 190 ( 6) JSR TONE ; ... FOR BEEP.
0305-C6 00 I 191 ( 5) DEC TEMP ; NEXT BEEP WILL BE HIGHER.
0307-D0 F7 I 192 (2**) BNE RISE ; DO NEXT BEEP IF NOT DONE.
0309-60 I 193 ( 6) RTS ; RETURN FOR RESTART.
030A-C6 02 I 194 ( 5) LOSE DEC SCORE ; IF SPIN BAD, SCORE=SCORE-1
030C-A4 02 I 195 ( 3) LDY SCORE ; SHOW SCORE
030E-20 3D 03 I 196 ( 6) JSR LIGHT
0311-A9 F0 I 197 ( 2) LDA #LOTONE ; PLAY LOW LOSE TONE.
0313-20 64 03 I 198 ( 6) JSR TONE
0316-A4 02 I 199 ( 3) LDY SCORE ; GET SCORE TO SEE...
0318-F0 01 I 200 (2**) BEQ LOSEND ; ... IF GAME IS OVER.
031A-60 I 201 ( 6) RTS ; IF NOT, RETURN FOR NEXT SPIN.
031B-A9 00 I 202 ( 2) LOSEND LDA #0 ; SET TEMP FOR USE AS FREQUENCY PARAMETER
031D-85 00 I 203 ( 2) STA TEMP ; IN FALLING WARBLE.
031F-8D 01 C0 I 204 ( 4) STA PORT1A ; CLEAR LED #1.
0322-A9 04 I 205 ( 2) LDA #4
0324-85 03 I 206 ( 2) STA DUR
0326-A5 00 I 207 ( 3) FALL LDA TEMP
0328-20 64 03 I 208 ( 6) JSR TONE ; PLAY BEEP.
032B-E6 00 I 209 ( 5) INC TEMP ; NEXT TONE WILL BE LOWER.
032D-D0 F7 I 210 (2**) BNE FALL
032F-60 I 211 ( 6) RTS ; RETURN FOR RESTART.
0330- I 212
0330- I 213 ;
0330- I 214 ; SUBROUTINE 'DELAY'
0330- I 215 ; VARIABLE LENGHT DELAY SUBROUTINE
0330- I 216 ; DELAY LENGTH = (2046*[DUR]+10) US.
0330- I 217 ;
0330-A4 03 I 218 ( 3) DELAY LDY DUR ; GET DELAY LENGHT.
0332-A2 FF I 219 ( 2) DL1 LDX #$FF ; SET COUNTER FOR INNER 2040 US. LOOP TO
0334-D0 00 I 220 (2**) DL2 BNE DL3 ; WASTE TIME.
0336-CA I 221 ( 2) DL3 DEX ; DECREMENT INNER LOOP COUNTER.
0337-D0 FB I 222 (2**) BNE DL2 ; LOOP UNTIL INNER LOOP DONE.
0339-88 I 223 ( 2) DEY ; DECREMENT OUTER LOOP COUNTER.
033A-D0 F6 I 224 (2**) BNE DL1 ; LOOP UNTIL DONE.
033C-60 I 225 ( 6) RTS ; RETURN.
033D- I 226
033D- I 227 ;
033D- I 228 ; SUBROUTINE 'LIGHT'
033D- I 229 ; SUBROUTINE TO LIGHT LEDS CORRESPONDING TO THE CONTENTS OF REGISTER Y ON
033D- I 230 ; ENTERING.
033D- I 231 ;
033D-A9 00 I 232 ( 2) LIGHT LDA #0 ; CLEAR ACCUMULATOR FOR BIT SHIFT.
033F-85 00 I 233 ( 2) STA TEMP ; CLEAR OVERFLOW FLAG
0341-8D 01 C0 I 234 ( 4) STA PORT1A ; CLEAR LOW LEDS
0344-8D 00 C0 I 235 ( 4) STA PORT1B ; CLEAR HIGH LEDS.
0347-C0 0F I 236 ( 2) CPY #15 ; CODE FOR UNCONNECTED BIT?
0349-F0 01 I 237 (2**) BEQ LIGHT0 ; IF SO, NO CHANGE.
034B-88 I 238 ( 2) DEY ; DECREMENT TO MATCH.
034C-38 I 239 ( 2) LIGHT0 SEC ; SET BIT TO BE SHIFTED HIGH.
034D-2A I 240 ( 2) LTSHFT ROL A ; SHIFT BIT LEFT.
034E-90 05 I 241 (2**) BCC LTCC ; IF CARRY SET, OVERFLOW HAS OCCURRED
0350- I 242 ; INTO HIGH BYTE.
0350-A2 FF I 243 ( 2) LDX #$FF ; SET OVERFLOW FLAG.
0352-86 00 I 244 ( 3) STX TEMP
0354-2A I 245 ( 2) ROL ; MOVE BIT OUT OF CARRY.
0355-88 I 246 ( 2) LTCC DEY ; ONE LESS BIT TO BE SHIFTED.
0356-10 F5 I 247 (2**) BPL LTSHFT ; SHIFT AGAIN IF NOT DONE.
0358-A6 00 I 248 ( 3) LDX TEMP ; GET OVERFLOW FLAG.
035A-D0 04 I 249 (2**) BNE HIBYTE ; IF FLAG <> 0, OVERFLOW: A CONTAINS HIGH BYTE.
035C-8D 01 C0 I 250 ( 4) LOBYTE STA PORT1A ; STORE A IN LOW ORDER LEDS.
035F-60 I 251 ( 6) RTS ; RETURN.
0360-8D 00 C0 I 252 ( 4) HIBYTE STA PORT1B ; STORE A IN HIGH ORDER LEDS.
0363-60 I 253 ( 6) RTS ; RETURN.
0364- I 254
0364- I 255 ;
0364- I 256 ; SUBROUTINE 'TONE'
0364- I 257 ; TONE GENERATION SUBROUTINE.
0364- I 258 ;
0364-85 04 I 259 ( 2) TONE STA FREQ
0366-A9 FF I 260 ( 2) LDA #$FF
0368-8D 00 CC I 261 ( 4) STA PORT3B
036B-A9 00 I 262 ( 2) LDA #0
036D-A6 03 I 263 ( 3) LDX DUR
036F-A4 04 I 264 ( 3) FL2 LDY FREQ
0371-88 I 265 ( 2) FL1 DEY
0372-18 I 266 ( 2) CLC
0373-90 00 I 267 (2**) BCC FL0
0375-D0 FA I 268 (2**) FL0 BNE FL1
0377-49 FF I 269 ( 2) EOR #$FF
0379-8D 00 CC I 270 ( 4) STA PORT3B
037C-CA I 271 ( 2) DEX
037D-D0 F0 I 272 (2**) BNE FL2
037F-60 I 273 ( 6) RTS
0380- I 274
0380- I 275 ;
0380- I 276 ; SUBROUTINE 'RANDOM'
0380- I 277 ; RANDOM NUMBER GENERATOR SUBROUTINE.
0380- I 278 ;
0380-38 I 279 ( 2) RANDOM SEC
0381-A5 15 I 280 ( 3) LDA RND+1
0383-65 18 I 281 ( 3) ADC RND+4
0385-65 19 I 282 ( 3) ADC RND+5
0387-85 14 I 283 ( 2) STA RND
0389-A2 04 I 284 ( 2) LDX #4
038B-B5 14 I 285 ( 4) RNDSH LDA RND,X
038D-95 15 I 286 ( 4) STA RND+1,X
038F-CA I 287 ( 2) DEX
0390-10 F9 I 288 (2**) BPL RNDSH
0392-60 I 289 ( 6) RTS
0393- I 290
0393- I 291 ;
0393- I 292 ; ARRAYS
0393- I 293 ;
0393- I 294
0393- I 295 ;
0393- I 296 ; ARRAY OF PATTERNS TO LIGHT LEDS, ARRAY ROWS CORRESPOND TO COLUMNS OF LED
0393- I 297 ; ARRAY, AND COLUMNS TO ROWS, FOR EXAMPLE, THIRD BYTE IN ROW ONE WILL LIGHT
0393- I 298 ; LED 7.
0393- I 299 ;
0393-01 08 40 02
10 80 04 20
00 I 300 LTABLE .HS 01.08.40.02.10.80.04.20.00
039C- I 301
039C- I 302 ;
039C- I 303 ; ARRAY OF SCORES RECEIVED FOR CERTAIN PATTERS OF LIT LEDS; ROWS CORRESPOND TO
039C- I 304 ; ROWS IN LED ARRAY. COLUMNS CORRESPOND TO NUMBER OF LEDS LIT IN THAT ROW.
039C- I 305 ; I.E. 3 LEDS IN MIDDLE ROW IS 3 PTS.
039C- I 306 ;
039C-00 00 00 00
00 00 01 03
00 00 00 00 I 307 SCORTB .HS 00.00.00.00.00.00.01.03.00.00.00.00