here you will find the GUMBALL maschine language game from the book Compute´s second book of VIC by R.S. Moser.
This programm help me to understand the 6502 and VIC language. I hope it help somebody else.
Code: Select all
* = $1001
; BASIC program to boot the machine language code
db $0b, $10, $0a, $00, $9e, $34, $31, $30, $39, $00, $00, $00
JMP START
X1964: STX $1D08
CPX #$0C
BPL X1976
LDA #$1E
STA $FC
LDA #$96
STA $FE
JMP X197E
X1976: LDA #$1F
STA $FC
LDA #$97
STA $FE
X197E: LDA #$00
X1980: CPX #$00
BEQ X198A
DEX
ADC #$15
JMP X1980
X198A: STA $FB
STA $FD
LDX $1D08
RTS
X1992: JSR X1964
LDA #$20
STA ($FB),Y
LDA #$01
STA ($FD),Y
RTS
START:
LDY #$00
JSR X19D2
LDY #$15
JSR X19D2
LDX #$00
JSR X19E5
LDX #$16
JSR X19E5
LDY #$04
X19B4: DEY
LDA #$30
STA $1FF1,Y
CPY #$00
BNE X19B4
X19BE: LDX #$01
X19C0: LDY #$01
X19C2: JSR X1992
INY
CPY #$15
BNE X19C2
INX
CPX #$16
BNE X19C0
JMP X19F8
X19D2: LDX #$00
X19D4: JSR X1964
LDA #$66
STA ($FB),Y
LDA #$00
STA ($FD),Y
INX
CPX #$17
BNE X19D4
RTS
X19E5: LDY #$01
X19E7: JSR X1964
LDA #$66
STA ($FB),Y
LDA #$03
STA ($FD),Y
INY
CPY #$15
BNE X19E7
RTS
X19F8:
LDA #$14
STA $1CFF
LDA #$0A
STA $1D00
LDY #$04
X1A04:
DEY
LDA #$30
STA $1FE6,Y
CPY #$00
BNE X1A04
X1A0E:
LDA #$01
STA $1D0C
LDY #$00
X1A15:
LDA #$00
STA $1D10,Y
LDA #$01
STA $1D24,Y
STA $1D38,Y
INY
CPY #$14
BNE X1A15
STA $1D03
LDA #$0F
STA $900E
JMP X1A32
X1A32:
LDA #$02
STA $1D04
X1A37:
LDA #$02
STA $1D05
X1A3C:
LDA #$32
STA $1D07
X1A41:
STA $1D06
X1A44:
DEC $1D06
BNE X1A44
DEC $1D07
BNE X1A41
JMP X1AA7
X1A51:
DEC $1D05
BNE X1A3C
JMP X1A61
X1A59:
DEC $1D04
BNE X1A37
JMP X1BE1
X1A61:
LDX $1CFF
LDY $1D00
JSR X1992
LDA $C5
CMP #$11
BNE X1A71
DEY
X1A71:
CMP #$12
BNE X1A76
INY
X1A76:
CMP #$09
BNE X1A7B
DEX
X1A7B:
CMP #$1A
BNE X1A84
CPX #$15
BEQ X1A84
INX
X1A84:
JSR X1964
LDA #$66
CMP ($FB),Y
BNE X1A96
LDX $1CFF
LDY $1D00
JSR X1964
X1A96:
LDA #$41
STA ($FB),Y
LDA #$00
STA ($FD),Y
STX $1CFF
STY $1D00
JMP X1A59
X1AA7:
LDX $1D01
LDY $1D02
LDA #$00
STA $900B
STA $900C
LDA $1D0E
CMP #$01
BEQ X1ACE
LDA $C5
CMP #$08
BEQ X1AC5
JMP X1A51
X1AC5: LDX $1CFF
LDY $1D00
JMP X1AD1
X1ACE: JSR X1992
X1AD1: DEX
LDA #$01
STA $1D0E
STX $1D01
STY $1D02
JSR X1964
LDA #$66
CMP ($FB),Y
BNE X1AF1
LDA #$C9
STA $900C
JSR X1B0D
JMP X1B1F
X1AF1: LDA #$51
CMP ($FB),Y
BNE X1B02
LDA #$DF
STA $900B
JSR X1B0D
JMP X1C42
X1B02: LDA #$1E
STA ($FB),Y
LDA #$00
STA ($FD),Y
JMP X1A51
X1B0D: LDA $1CFF
STA $1D01
LDA $1D00
STA $1D02
LDA #$00
STA $1D0E
RTS
X1B1F: INX
JSR X1992
DEC $1FE9
LDA $1FE9
CMP #$2F
BNE X1B5F
LDA #$39
STA $1FE9
DEC $1FE8
LDA $1FE8
CMP #$2F
BNE X1B5F
LDA #$39
STA $1FE8
DEC $1FE7
LDA $1FE7
CMP #$2F
BNE X1B5F
LDA #$39
STA $1FE7
DEC $1FE6
LDA $1FE6
CMP #$2F
BNE X1B5F
LDA #$39
STA $1FE6
X1B5F: JMP X1A51
X1B62: STY $1D09
LDX $1CFD
LDY $1CFE
JSR X1964
LDA #$66
CMP ($FB),Y
BNE X1B7C
LDA #$00
STA $1CFC
JMP X1BDB
X1B7C: LDA #$20
STA ($FB),Y
LDA #$01
STA ($FD),Y
LDA $1CFC
CMP #$01
BEQ X1B95
INY
LDA #$66
CMP ($FB),Y
BEQ X1BA9
JMP X1BB0
X1B95: DEY
LDA #$66
CMP ($FB),Y
BEQ X1B9F
JMP X1BB0
X1B9F: INY
LDA #$02
STA $1CFC
INX
JMP X1BB0
X1BA9: DEY
LDA #$01
STA $1CFC
INX
X1BB0: CPX #$16
BNE X1BB7
JMP X1A0E
X1BB7: JSR X1964
LDA #$66
CMP ($FB),Y
BNE X1BC4
INX
JMP X1BB7
X1BC4: LDA #$41
CMP ($FB),Y
BNE X1BCD
JMP X1C86
X1BCD: LDA #$51
STA ($FB),Y
LDA #$04
STA ($FD),Y
STX $1CFD
STY $1CFE
X1BDB: LDY $1D09
JMP X1C2D
X1BE1: LDA #$EB
STA $900A
LDA $1D0C
CMP #$01
BNE X1C04
LDY $1D03
CPY #$13
BEQ X1BFF
LDA #$02
STA $1D10,Y
INC $1D03
JMP X1C04
X1BFF: LDA #$00
STA $1D0C
X1C04: LDY #$FF
X1C06: INY
LDA $1D10,Y
BNE X1C18
CPY #$13
BNE X1C06
LDA #$00
STA $900A
JMP X1A32
X1C18: LDA $1D10,Y
STA $1CFC
LDA $1D24,Y
STA $1CFD
LDA $1D38,Y
STA $1CFE
JMP X1B62
X1C2D: LDA $1CFC
STA $1D10,Y
LDA $1CFD
STA $1D24,Y
LDA $1CFE
STA $1D38,Y
JMP X1C06
X1C42: JSR X1964
LDA #$66
STA ($FB),Y
LDA #$04
STA ($FD),Y
INX
JSR X1992
INC $1FE8
LDA $1FE8
CMP #$3A
BNE X1C7E
LDA #$30
STA $1FE8
INC $1FE7
LDA $1FE7
CMP #$3A
BNE X1C7E
LDA #$30
STA $1FE7
INC $1FE6
LDA $1FE6
CMP #$3A
BNE X1C7E
LDA #$30
STA $1FE6
X1C7E: LDA #$00
STA $1D0E
JMP X1A51
X1C86: JSR X1964
LDA #$53
STA ($FB),Y
LDA #$02
STA ($FD),Y
LDA #$C9
STA $900C
LDA #$0F
STA $900E
X1C9B: LDA #$78
STA $1D0A
X1CA0: STA $1D0B
X1CA3: DEC $1D0B
BNE X1CA3
DEC $1D0A
BNE X1CA0
DEC $900E
BNE X1C9B
LDA #$00
STA $900C
LDY #$00
X1CB9: LDA $1FE6,Y
CMP $1FF1,Y
BMI X1CD3
BNE X1CCB
INY
CPY #$04
BNE X1CB9
X1CC8: LDA $1FE6,Y
X1CCB: STA $1FF1,Y
INY
CPY #$04
BNE X1CC8
X1CD3: LDA $C5
CMP #$0F
BNE X1CD3
JMP X19BE