Source file: /~heha/hs/kcemu/kcswberg.zip/DISK/MINESW3.ASM

MINESW3ASM	;
OS	EQU	0F003H
BBH	DEFB	35
BBD	DEFB	35H
BXH	DEFB	19
BXD	DEFB	19H
BYH	DEFB	14
BYD	DEFB	14H
EBD	DEFB	35H
	DEFW	7F7FH
	DEFM	'MINESWEEPER'
	DEFB	1
	CALL	TITLE
	CALL	OS
	DEFB	23H
	DEFW	0D0AH
	DEFW	0A0AH
	DEFM	' (Benutzen Sie die '
	DEFM	'KC-Maus!)'
	NOP
MAIN	CALL	OS
	DEFB	0EH
	JR	NC,MAIN
	CP	3
	JR	Z,EXIT
	CP	0DH
	JR	NZ,MAIN
	LD	DE,(0B7A0H)
	LD	A,D
	OR	A
	JR	NZ,MAIN
	LD	A,E
	CP	10
	JR	C,NEGA
	CP	14
	JR	C,MAIN
	CP	19
	JR	NC,MAIN
EXIT	LD	A,39H
	LD	(0B7A3H),A
	CALL	OS
	DEFB	23H
	DEFB	0CH
	DEFM	'%MINESWEEPER'
	DEFW	0D0AH
	DEFM	'%MENU'
	DEFW	0D0AH
	NOP
	RET
 
NEGA
	CALL	TITLE
	LD	A,(BXH)
	LD	B,A	;Spielfeld-
	LD	A,(BYH)
	LD	C,A	;Gr|~e
	LD	A,(BBD)
	LD	(EBD),A
	CALL	OS
	DEFM	'#     Bombs: '
	NOP
	CALL	BZAHL
	LD	DE,200H
	LD	(0B7A0H),DE
	LD	A,7
	LD	(0B7A3H),A
NEGA1
	PUSH	BC
	LD	H,80H
	LD	L,81H
	LD	D,82H
	LD	E,83H
	CALL	WRLINE
NXTLIN	LD	H,84H
	LD	L,' '
	LD	D,85H
	LD	E,86H
	CALL	WRLINE
	DEC	C
	JR	Z,ENDLIN
	LD	H,87H
	LD	L,88H
	LD	D,89H
	LD	E,8AH
	CALL	WRLINE
	JR	NXTLIN
ENDLIN	LD	H,8BH
	LD	L,8CH
	LD	D,8DH
	LD	E,8EH
	CALL	WRLINE
	POP	BC
	CALL	BOMBEN
 
INPUT	CALL	OS
	DEFB	0EH
	JR	NC,INPUT
	LD	DE,(0B7A0H)
	OR	A
	JR	Z,NSTATUS
	CP	3
	JP	Z,EXIT
	CP	0DH
	JR	NZ,INPUT
	LD	A,D
	OR	A
	JR	NZ,NSTATUS
	LD	A,E
	CP	10
	JP	C,NEGA
	CP	14
	JR	C,INPUT
	CP	19
	JP	C,EXIT
	JR	INPUT
 
NSTATUS
	PUSH	AF
	LD	A,D
	SRL	A
	JR	NC,FAULT
	DEC	A
	CP	C
	JR	NC,FAULT
	LD	A,E
	SRL	A
	JR	NC,FAULT
	CP	B
	JR	C,NOFAULT
FAULT
	POP	AF
	JR	INPUT
 
NOFAULT	POP	AF
	OR	A
	JP	NZ,DCOVER
	CALL	OS
	DEFB	32H
	LD	A,M
	PUSH	AF
	AND	7FH
	CP	32
	JR	Z,SPERR
	CP	23H
	JR	Z,FRAGE
	LD	A,7
	LD	(0B7A3H),A
	LD	A,' '
	JR	OUTP
SPERR	LD	A,3FH
	LD	(0B7A3H),A
	LD	A,'#'
	JR	OUTP
FRAGE	LD	A,77H
	LD	(0B7A3H),A
	LD	A,'?'
OUTP	CALL	OS
	DEFB	24H
	CP	23H
	JR	NZ,NDECBZ
	CALL	DECBZ
	CALL	BZAHL
	JR	NNNN
NDECBZ	CP	32
	JR	NZ,NNNN
	CALL	INCBZ
	CALL	BZAHL
NNNN	POP	AF
	RLA
	JR	NC,NOBOMB
	SET	7,M
NOBOMB	JP	INPUT
WRLINE
	PUSH	BC
	LD	A,H
	CALL	OS
	DEFB	24H
WRL1	LD	A,L
	CALL	OS
	DEFB	24H
	DEC	B
	JR	Z,WRL2
	LD	A,D
	CALL	OS
	DEFB	24H
	JR	WRL1
WRL2	LD	A,E
	CALL	OS
	DEFB	24H
	CALL	OS
	DEFB	2CH
	POP	BC
	RET
BOMBEN
WDH	LD	A,R
	OR	A
	JR	Z,WDH
	LD	E,A
	LD	A,(BBH)
	LD	D,A	;Bombenzahl
NXTB	LD	A,E
	AND	0B8H
	JP	PE,NSCF
	SCF
NSCF	RL	E
	PUSH	DE
	LD	A,E
	LD	D,C
NXZ	CP	B
	JR	C,RDY
	SUB	B
	DEC	D
	JR	NZ,NXZ
NXB	POP	DE
	JR	NXTB
	;
RDY	ADD	A
	INC	A
	LD	E,A
	SCF
	RL	D
	LD	(0B7A0H),DE
	LD	A,0A0H
	CALL	OS
	DEFB	32H
	CP	M
	JR	Z,NXB
	CALL	OS
	DEFB	24H
	POP	DE
	DEC	D
	JR	NZ,NXTB
	RET
DCOVER	;Discovery
	CALL	OS
	DEFB	32H
	LD	A,M
	AND	7FH
	CP	23H
	JP	Z,INPUT
	LD	A,M
	RLA
	JR	C,BOMB	;draufgelatscht
	PUSH	BC
	PUSH	DE
	XOR	A
	DEC	HL
	DEC	HL
	BIT	7,M
	JR	Z,ZAE1
	INC	A
ZAE1	LD	DE,-82
	ADD	HL,DE
	LD	B,3
ZAE3	INC	HL
	INC	HL
	BIT	7,M
	JR	Z,ZAE2
	INC	A
ZAE2	DJNZ	ZAE3
	LD	DE,80
	LD	B,2
ZAE4	ADD	HL,DE
	BIT	7,M
	JR	Z,ZAE5
	INC	A
ZAE5	DJNZ	ZAE4
	LD	B,2
ZAE6	DEC	HL
	DEC	HL
	BIT	7,M
	JR	Z,ZAE7
	INC	A
ZAE7	DJNZ	ZAE6
	LD	E,A
	ADD	A
	ADD	A
	ADD	A
	OR	7
	LD	(0B7A3H),A
	LD	A,E
	ADD	'0'
	CALL	OS
	DEFB	24H
	POP	DE
	POP	BC
	JP	INPUT
BOMB
	LD	A,87H
	LD	(0B7A3H),A
	LD	A,8FH
	CALL	OS
	DEFB	24H
	PUSH	BC
	LD	D,3
BOB1	LD	E,1
	PUSH	BC
BOB2	CALL	OS
	DEFB	32H
	LD	A,M
	CP	8FH
	JR	Z,KEINT
	CP	0A3H
	JR	Z,KEINT
	CP	23H
	JR	Z,DENKSTE
	RLA
	JR	C,EXTRAB
	JR	KEINT
	;
DENKSTE	LD	A,27H
	JR	GOSHI
EXTRAB
	LD	A,7
GOSHI	LD	(0B7A3H),A
	LD	A,8FH
	LD	(0B7A0H),DE
	CALL	OS
	DEFB	24H
KEINT
	INC	E
	INC	E
	DJNZ	BOB2
	POP	BC
	INC	D
	INC	D
	DEC	C
	JR	NZ,BOB1
	POP	BC
	JP	MAIN
TITLE
	LD	HL,0
	LD	(0B79CH),HL
	LD	HL,2028H
	LD	(0B79EH),HL
	LD	HL,600H
	LD	(0B7A2H),HL
	LD	HL,5300H
	LD	(0B7ACH),HL
	CALL	OS
	DEFB	23H
	DEFB	0CH
	DEFM	' New Game     Exit'
	NOP
	RET
BZAHL
	LD	A,6
	LD	(0B7A3H),A
	LD	DE,29
	LD	(0B7A0H),DE
	LD	A,(EBD)
	CALL	OS
	DEFB	1CH
	RET
 
DECBZ	LD	A,(EBD)
	SUB	1
INCBZ1	DAA
	LD	(EBD),A
	RET
 
INCBZ	LD	A,(EBD)
	ADD	1
	JR	INCBZ1
EFB 0		;Byte-Z{h
Detected encoding: ASCII (7 bit)2