	OPT	TAP,NOL

	ORG	$0000

	SETDP $EE	Damit ausserhalb des PGMs

BEG	LBRA	START

MMU	EQU	$FFE0
MMURAM	EQU	$EFE0
DRISEL	EQU	$FD38
FIGPOS	EQU	$4B34
AADRLB	EQU	$4604
NEUSPLT EQU	-$3FFB
RELBGR	EQU	$4619
STRAADR EQU	$7B62
ZIFAADR EQU	$7824
OFFS	EQU	-$14
STRA	EQU	$1F
STRM	EQU	$FF
STRE	EQU	$F8
STRVV	EQU	$18
A3	EQU	$84
A5	EQU	$4FD
A8	EQU	-$396
LNRADR	EQU	$483A
ESCHADR EQU	$4835
ZSCHADR EQU	$4832
LBANF	EQU	$4017
BALL	EQU	$E0
LENDE	EQU	$4F40
ANFPOS	EQU	$4F76
BILDANF EQU	-$600
BILDEND EQU	$27F
OFF	EQU	-3
PAUSE	EQU	0
LAENG1	EQU	25
LAENG3	EQU	17
LAENG4	EQU	20
ESC	EQU	%0011011
BLANK	EQU	%0100000

SCHZEHN RMB	1
SCHEIN	RMB	1
LBANZ	RMB	1
ANZAHL	RMB	1
ZAHL	RMB	1
ZERO	RMB	1
SIEBEN	RMB	1
DREI	RMB	1
NNZIG	RMB	1
UGRENZE RMB	2
UNNUMGR RMB	2
BILDGR	RMB	2
TEMP	RMB	2

	FDB	$6038
	FDB	$6838
	FDB	$7038
	FDB	$7838
ADRTABZ RMB	2

MONITOR FDB	$CD03
VIDMON	FDB	$FCF6
VIDCON	FDB	$FCF7
PIACON	FDB	$FCF1
PIATAST FDB	$FCF0
BEWEGEN FCB	3
PKTAADR RMB	24
ENDPKT
BALLTAB FDB	0,0,0,0,0,0,0,0,0,0,0,0
	FDB	0,0,0,0,0,0,0,0,0,0,0,0
	FDB	0,0,0,0,0,0,0,0,0,0,0,0

BILDPOS FDB	0,0,0,0,0,0,0,0,0,0,0,0
	FDB	0,0,0,0,0,0,0,0,0,0,0,0
	FDB	0,0,0,0,0,0,0,0,0,0,0,0
	FDB	0,0,0,0,0,0,0,0,0,0,0,0

ZTO	FDB	$0FF0,$3FFC,$7FFE,$FC3F,$F81F
	FDB	$F81F,$F81F,$F81F,$F81F,$F81F
	FDB	$F81F,$FC3F,$7FFE,$3FFC,$0FF0

	FDB	$0070,$00F8,$00F8,$00F8,$00F8
	FDB	$00F8,$00F8,$00F8,$00F8,$00F8
	FDB	$00F8,$00F8,$00F8,$00F8,$0070

	FDB	$0FF0,$3FFC,$7FFE,$FC3F,$783F
	FDB	$007F,$01FE,$07F8,$1FE0,$3F80
	FDB	$7E00,$FC00,$FFFE,$FFFF,$FFFE

	FDB	$0FF0,$3FFC,$7FFE,$FC3F,$783F
	FDB	$003F,$00FE,$01FC,$00FE,$003F
	FDB	$781F,$FC3F,$7FFE,$3FFC,$0FF0

	FDB	$7038,$F87C,$F87C,$F87C,$F87C
	FDB	$F87C,$FFFE,$FFFF,$7FFE,$007C
	FDB	$007C,$007C,$007C,$007C,$0038

	FDB	$3FFE,$7FFF,$FFFE,$F800,$F800
	FDB	$F9F0,$FFFC,$FFFE,$7E3F,$001F
	FDB	$781F,$FC3F,$7FFE,$3FFC,$0FF0

	FDB	$0FF0,$3FFC,$7FFE,$FC3F,$F81E
	FDB	$F800,$FBF0,$FFFC,$FFFE,$FC3F
	FDB	$F81F,$FC3F,$7FFE,$3FFC,$0FF0

	FDB	$7FFE,$FFFF,$7FFF,$003F,$007E
	FDB	$00FC,$01F8,$03F0,$07E0,$0FC0
	FDB	$1F80,$3F00,$7E00,$7C00,$7800

	FDB	$0FF0,$3FFC,$7FFE,$FC3F,$F81F
	FDB	$FC3F,$7FFE,$3FFC,$7FFE,$FC3F
	FDB	$F81F,$FC3F,$7FFE,$3FFC,$0FF0

	FDB	$0FF0,$3FFC,$7FFE,$FC3F,$F81F
	FDB	$FC3F,$7FFF,$3FFF,$0FDF,$001F
	FDB	$781F,$FC3F,$7FFE,$3FFC,$0FF0

	FDB	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

LUBATAB FDB	$0FF0,$3FFC,$7FFE,$FFFF,$FFFF
	FDB	$FFFF,$FFFF,$FFFF,$7FFE,$3FFC
	FDB	$1FF8,$0FF0,$07E0,$0180,$0180

FIGTAB	FDB	$0000,$0060,$3800,$0000,$0018,$FF30,$0000,$0007,$F8D8,$0000,$0001,$67F0
	FDB	$0000,$0073,$9FEC,$0000,$00FF,$E7EE,$0000,$0079,$F9DF,$0000,$00FF,$FE5F
	FDB	$0000,$01FF,$FF9F,$0000,$03FF,$F3E6,$0000,$01FF,$F9F8,$0000,$027F,$93F8
	FDB	$0000,$03FF,$C7F0,$0000,$01FF,$FFE0,$0000,$00FF,$FF80,$0000,$003F,$FC00
	FDB	$0000,$000F,$C006,$0000,$01C0,$401D,$0000,$07FF,$C03F,$0070,$1FDF,$F81D
	FDB	$03F8,$7FBF,$DE3E,$1FFB,$7E7F,$DF70,$7CFE,$B9FF,$DEE0,$73F7,$D6FF,$CD80
	FDB	$6FBB,$D8F7,$C000,$3E7D,$B047,$8000,$F9FF,$D002,$8000,$E7CF,$E400,$8000
	FDB	$DF3F,$F611,$0000,$7CFB,$F771,$0000,$F3E7,$EFFB,$0000,$EF9F,$9FFF,$0000
	FDB	$3E7E,$40FE,$0000,$7DF8,$8002,$0000,$3FE0,$4002,$0000,$0780,$1D0C,$0000
	FDB	$0000,$1CE0,$0000,$0000,$1CE0,$0000,$0007,$DCE0,$0000,$001F,$FFF0,$0000
	FDB	$000F,$FDF0,$0000
FTEND

START	LDA	#$20
	STA	DRISEL
	LBSR CLEAR
	LBSR EINGEB
NOCHMAL LBSR FIGUR
	LBSR INIT
	LBSR SPIEL
	LBSR EINGEB
	LBSR CLEAR
	BRA	NOCHMAL

CLEAR	LDD	#$0C0C	Bildseite $0C
	STD	MMURAM+4	In RAM-Bereich
	STD	MMURAM+6	von $4000 - $7FFF
	STD	MMU+4	einblenden.
	STD	MMU+6
	LDD	#0
	STA	[VIDMON]
	STA	[VIDCON]
	LDX	#$4000
CLEAR1	STD	,X++
	CMPX #$8000
	BNE	CLEAR1
	RTS

FIGUR	LDX	#FIGTAB
	LDU	#FIGPOS
FIGUR1	LDD	,X++
	STD	,U++
	LDD	,X++
	STD	,U++
	LDD	,X++
	STD	,U
	LEAU 60,U
	CMPX #FTEND
	BNE	FIGUR1
	RTS

LUFTBAL LDX	#AADRLB
LUFT1	LDA	#11
	LBSR ZIFFOFF
	LEAX $800,X
	CMPX #0
	BGT	LUFT1
	LEAX NEUSPLT,X
	CMPX #RELBGR
	BLT	LUFT1
	RTS

EINGEB	TST	[PIACON]
	BPL	EINGEB
	LDB	[PIATAST]
	ANDB #$7F
	CMPB #ESC
	BNE	EINGB1
	LDA	#1
	LBRA BACK
EINGB1	CMPB #'1
	BLT	EINGEB
	CMPB #'4
	BGT	EINGEB
	SUBB #'0
	STB	ANZAHL
	ASLB
	NEGB
	SEX
	ADDD #ADRTABZ-2
	STD	ADRTABZ
	RTS

INIT	BSR	CLRPKT
	BSR	ARAHMEN
	BSR	IRAHMEN
	RTS

CLRPKT	LDX	#PKTAADR
CLRP1	CLR	,X+
	CMPX #ENDPKT
	BNE	CLRP1
	RTS

ARAHMEN LDX	#STRAADR
	LDA	ANZAHL
	LDB	#32
	MUL
	ADDD #11
	LBSR STRV
	LDB	#LAENG1
	BSR	STRH
	LDX	#STRAADR
	LEAX 26,X
	LDA	ANZAHL
	LDB	#32
	MUL
	ADDD #10
	LBSR STRV
	LDX	#STRAADR
	LDB	#LAENG1
	BSR	STRH
	RTS

IRAHMEN LDA	ANZAHL
	STA	ZAHL
	LDX	#ZIFAADR
IRAHM1	LDA	ZAHL
	LBSR ZIFFOFF
	LEAX A3,X
	BSR	ZIFRAHM
	LEAX A8,X
	DEC	ZAHL
	BNE	IRAHM1
	RTS

ZIFRAHM BSR	STRCHH2
	LDB	#7
	STB	SIEBEN
RAHM1	BSR	STRCHV2
	DEC	SIEBEN
	BEQ	RAHM2
	LEAX A5,X
	BRA	RAHM1
RAHM2	BSR	STRCHH2
	RTS

STRCHV2 LDB	#LAENG4
STRV	LDA	#STRVV
STRV1	LEAX -$40,X
	STA	,X
	DECB
	BNE	STRV1
	RTS

STRCHH2 LDB	#LAENG3
STRH	LDA	#STRA
	STA	,X+
STRH1	LDA	#STRM
	STA	,X+
	DECB
	BNE	STRH1
	LDA	#STRE
	STA	,X
	RTS

ZIFFOFF STX	UNNUMGR
	LEAX -960,X
	LDB	#30
	MUL
	ADDD #ZTO
	TFR	D,Y
ZIFFER	LDD	,Y++
	STD	,X
	LEAX $40,X
	CMPX UNNUMGR
	BLT	ZIFFER
	RTS

SPIEL	LDA	#1
	STA	DREI
SPIEL1	LDX	#LNRADR
	LBSR ZIFFOFF
	LDA	#1
	STA	ZAHL
SPIEL2	LBSR LUFTBAL
	LBSR BLINKST
	LBSR SCHINI
	LDA	#1
	STA	ZERO
	LDA	#3
	STA	BEWEGEN
SPIEL3	DEC	BEWEGEN
	LBSR BEWLB
	LBSR BEWSCH
	LDX	#$400
SPIEL4	LEAX -1,X
	BNE	SPIEL4
	LBSR SCHUSS
	LBSR TREFFER
	LBSR ZEIT
	LBSR ESCAPE
	TST	ZERO
	BEQ	STRAF
	TST	LBANZ
	BNE	SPIEL3
	BRA	STREND

STRAF	TST	BALLTAB
	BNE	SPIEL3
STR1	DEC	LBANZ
	BMI	STREND
	LBSR CLRFLD
	LBSR MULT
	STD	UGRENZE
	LEAU -3,U
	LEAX 3*OFF,X
	LBSR ZB1
	BRA	STR1

STREND	BSR	CLRBALL
	INC	ZAHL
	LDA	ZAHL
	CMPA ANZAHL
	BLE	SPIEL2
	INC	DREI
	LDA	DREI
	CMPA #4
	BNE	SPIEL1
	RTS

CLRBALL PSHS Y,X
	LDY	#BALLTAB
CLRB1	LDX	,Y++
	BEQ	CLRBEND
	LBSR LSB
	BRA	CLRB1
CLRBEND PULS Y,X
	RTS

BEWLB	TST	BEWEGEN
	BNE	BEWEND
	LDA	#3
	STA	BEWEGEN
	BSR	CLRBALL
	LDB	#$40
	LDX	#LBANF
	LDA	#5
	PSHS A
BEWLB1	BSR	SCHIEB
	LEAX -5,X
	NEGB
	DEC	,S
	LDA	,S
	BNE	BEWLB1
	LEAS 1,S
	BSR	CLRBALL
BEWEND	RTS

SCHIB0	PULS A,X
SCHIEB	PSHS A,X
	TFR	X,Y
	LDU	,X
	PSHS U
	LDU	2,X
	PSHS U
	LDA	#255
	BRA	SCHIB2
SCHIB1	LEAY B,Y
SCHIB2	LEAX B,X
	LDU	,X
	STU	,Y
	LDU	2,X
	STU	2,Y
	DEC	A
	BNE	SCHIB1
	PULS U
	STU	2,X
	PULS U
	STU	,X
	DEC	,S
	BNE	SCHIB0
	LEAS 3,S
	RTS

BEWSCH	LDY	#BALLTAB
BEWS1	LDX	,Y++
	BEQ	BEWSEND
	CMPX #LENDE
	BGT	BEWS2
	BSR	LSB
REMOVE	LDX	,Y++
	STX	-4,Y
	BEQ	BEWSCH
	BRA	REMOVE
BEWS2	BSR	MOVEB
	STX	-2,Y
	BRA	BEWS1
BEWSEND RTS

LSB	LDA	#BALL
	EORA ,X
	STA	,X
	LDA	#BALL
	EORA $40,X
	STA	$40,X
	LDA	#BALL
	EORA $80,X
	STA	$80,X
	RTS

MOVEB	BSR	LSB
	LEAX -1,X
	BSR	LSB
	RTS

SCHUSS	TST	ZERO
	BEQ	ESCHUSS
	LDA	[PIACON]
	BPL	ESCHUSS
	LDB	[PIATAST]
	ANDB #$7F
	CMPB #BLANK
	BEQ	SCHU2
	CMPB #%11011
	BNE	ESCHUSS
	LDA	#1
	LBRA BACK
SCHU2	LBSR CLRBALL
	LDY	#BALLTAB
SCHU1	LDX	,Y++
	BNE	SCHU1
	LDX	#ANFPOS
	STX	-2,Y
	BSR	SCHDEC
	BSR	SCHANZ
ESCH1	LBSR CLRBALL
ESCHUSS RTS

SCHDEC	DEC	SCHEIN
	BPL	SCHEND
	LDA	#9
	DEC	SCHZEHN
	STA	SCHEIN
SCHEND	DEC	NNZIG
	BNE	SCHE1
	CLR	ZERO
SCHE1	RTS

SCHANZ	LDX	#ESCHADR
	LDA	SCHEIN
	LBSR ZIFFOFF
	LDX	#ZSCHADR
	LDA	SCHZEHN
	LBSR ZIFFOFF
	RTS

SCHINI	LDA	#40
	STA	LBANZ
	LDA	#25
	STA	NNZIG
	LDA	#5
	STA	SCHEIN
	LDA	#2
	STA	SCHZEHN
	BSR	SCHANZ
	LDX	#BALLTAB
	LDB	#20
SCHIN1	CLR	,X+
	DEC	B
	BNE	SCHIN1
	RTS

MULT	LDA	ZAHL
	ASLA
	LDX	ADRTABZ
	LDX	A,X
	LDB	#3
	MUL
	ADDD #PKTAADR
	TFR	D,U
	RTS

ZEIT	BSR	MULT
	STD	UGRENZE
ZB1	INC	,-U
	LDA	,U
	CMPA #10
	BNE	ENDZEIT
	CLRA
	LBSR ZIFFOFF
	LEAX OFF,X
	CLR	,U
	CMPU UGRENZE
	BNE	ZB1
	RTS
ENDZEIT LBSR ZIFFOFF
	RTS

BLINKST BSR	MULT
	LEAX OFFS,X
BLINK0	LDD	#PAUSE
BLINK1	SUBD #1
	BNE	BLINK1
	LDA	#10
	LBSR ZIFFOFF
	LDD	#PAUSE
BLINK2	SUBD #1
	BNE	BLINK2
	LDA	ZAHL
	LBSR ZIFFOFF
	TST	[PIACON]
	BPL	BLINK0
	LDA	[PIATAST]
	ANDA #$7F
	CMPA #ESC
	BNE	BLINK3
	LBRA BACK
BLINK3	ANDA #%11011111
	CMPA #'S
	BNE	BLINK0
	RTS

TREFFER LDY	#BALLTAB
TREFF1	LDX	,Y++
	BEQ	TREFEND
	TST	,X
	BPL	EXPLOS
	LEAX $80,X
	TST	,X
	BPL	EXPLOS
	BRA	TREFF1
TREFEND RTS

EXPLOS	DEC	LBANZ
	LBSR CLRBALL
	BSR	SUCHLB
	BSR	BILD
	LBSR CLRBALL
	BRA	TREFF1

SUCHLB	LDB	#$40
SUCH1	LEAX B,X
	LDA	,X
	BNE	SUCH2
	NEGB
	BRA	SUCH1
SUCH2	CMPA #$1F
	BEQ	SUCH3
	CMPA #$F8
	BEQ	SUCH4
	BRA	SUCH1
SUCH3	LEAX BILDEND,X
	RTS
SUCH4	LEAX BILDEND-1,X
	RTS

BILD	STX	BILDGR
	LEAX BILDANF,X
	LDU	#BILDPOS
BILD1	LDD	,U++
	STD	,X
	LDD	,U++
	STD	2,X
	LEAX $40,X
	CMPX BILDGR
	BNE	BILD1
	RTS

CLRFLD	PSHS D,X,Y,U
	STS	TEMP
	LDS	#$7FDE
	LDY	#0
	LDX	#0
	LDU	#0
	CLRA
	CLRB
FLD1	PSHS D,X,Y,U
	PSHS D,X,Y,U
	PSHS D,X,Y,U
	PSHS D,X,Y,U
	LEAS -$20,S
	CMPS #$3FDE
	BNE	FLD1
	LDS	TEMP
	PULS D,X,Y,U
	RTS

ESCAPE	LDA	[PIATAST]
	CMPA #ESC
	BNE	ESC1
	LBRA BACK
ESC1	RTS

BACK	LDD	#$0F0F
	STD	MMURAM+4
	STD	MMURAM+6
	STD	MMU+4
	STD	MMU+6
	JMP	[MONITOR]

	END	BEG
                                                                                                                                                                        