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

SCHON3ASMOS	EQU	0F003H
ARG1	EQU	0B782H
FARB	EQU	0B7D6H
	DB 7FH,7FH,'SCHONER',1
	;Schirm loeschen
	LD	HL,0
	LD	(0B79CH),HL
	LD	HL,2028H
	LD	(0B79EH),HL
	LD	A,38H
	LD	(0B7A3H),A
	CALL	OS
	DEFB	23H,0CH,0
ANFANG	;Linie loeschen
	LD	HL,(POSIT)
	LD	A,2
	CALL	RECT
	;Linie zeichnen
	LD	HL,LOCAT
	LD	A,(COLOR)
	CALL	RECT
	;Linie merken
	LD	HL,LOCAT
	LD	DE,(POSIT)
	LD	BC,16
	LDIR
	;Neue Linie berechnen
	LD	IY,VEKTOR
	LD	B,8
LOOP
	LD	E,(IY)
	LD	D,(IY+1)
	LD	L,(IY+16)
	LD	H,(IY+17)
	ADD	HL,DE
	BIT	7,H
	JR	Z,POSI
	 CALL	NEGDE
	 EX	DE,HL
	 CALL	NEGDE
	 EX	DE,HL
	 JR	ENDIF
POSI
	 PUSH	BC
	  BIT	0,B
	  LD	BC,0FFH
	  JR	NZ,POSIY
	  LD	BC,13FH
POSIY
	  CALL	CPHLBC
	  JR	C,POSIE
	  CALL	NEGDE
	  EX	DE,HL
	  CALL	NEGDE
	  EX	DE,HL
	  ADD	HL,BC
	  ADD	HL,BC
	  INC	HL
POSIE
	 POP	BC
ENDIF
	LD	(IY),E
	LD	(IY+1),D
	LD	(IY+16),L
	LD	(IY+17),H
	INC	IY
	INC	IY
	DJNZ	LOOP
	;Positionszeiger erhoehen
	LD	HL,(POSIT)
	LD	DE,16
	ADD	HL,DE
	LD	BC,PUFFEND
	CALL	CPHLBC
	JR	NZ,INCPOS
	LD	HL,PUFFER
	LD	A,(COLOR)
	ADD	8
	CP	7*8
	JR	NZ,INCCOL
	LD	A,8
INCCOL
	LD	(COLOR),A
INCPOS
	LD	(POSIT),HL
	CALL	OS
	DB	0EH
	RET	C
	JP	ANFANG
 
RECT:	;Viereck zeichnen
	;HL: ^Paramterliste
	;A: Farbcode
	LD	(FARB),A
	CALL	RECT2
	CALL	RECT2
	LD	DE,-12
	ADD	HL,DE
	CALL	RECT2
	LD	DE,ARG1
	LD	BC,4
	LDIR
	LD	BC,-16
	ADD	HL,BC
	LD	BC,4
	LDIR
	JR	RECT3
 
RECT2	LD	DE,ARG1
	LD	BC,8
	LDIR
RECT3	PUSH	HL
	CALL	OS
	DB	3EH
	POP	HL
	RET
NEGDE:	;Negiert DE
	PUSH	HL
	LD	HL,0
	OR	A
	SBC	HL,DE
	EX	DE,HL
	POP	HL
	RET
CPHLBC	;CMP HL,BC
	PUSH	HL
	OR	A
	SBC	HL,BC
	POP	HL
	RET
 
COLOR	DB	8
VEKTOR	DW	7,10,17,4,6,9,18,5
LOCAT	DW	7,20,88,170,300,50,0,0
POSIT	DW	PUFFER
PUFFER	DS	16*4,0
PUFFEND
]
PUFFEND:
PUFFER:
PO	DW	7,10,17,4,6,9,18,5
LOCAT	DW	7,20,88,170,300,50,0,0
POSIT	DW	PUFFER
PUFFER	DS	16*4,0
PUFFEND
]
PUFFEND:
PUFFER:
PO
Detected encoding: ASCII (7 bit)2