;************************
;  PLOT / SYMBOL - MCode
;  Turbo Pascal Version
;  1987 by M.A. & E. W.
;  Vers. 10/8/87
;    (incl. DotColor)
;    (incl. Scr_Access)
;************************
;
	.Z80
	ASEG
	ORG 100h
;
START   EQU 0F400h
XBIOS   EQU 0FC5Ah
RUN_SCR EQU 00E9h
;
	.PHASE START
;
_PLOT:
;
	LD	DE,(_X)
	LD	HL,(_YM)
;
	LD	BC,PLOT
	CALL	XBIOS
	DW	RUN_SCR
	RET
;
;
_X:  DS 2
_YM: DS 2
;
;
PLOT:
	LD	A,03
	AND	D
	LD	D,A
	PUSH	HL
	LD	H,00
	ADD	HL,HL
	LD	BC,0B600h
	ADD	HL,BC
	LD	C,(HL)
	INC	HL
	LD	B,(HL)
	LD	A,C
	AND	0F8h
	LD	L,A
	LD	H,B
	ADD	HL,HL
	ADD	HL,DE
	LD	 A,L
	AND	0F8h
	LD	L,A
	LD	A,C
	AND	07
	OR	L
	LD	L,A
	LD	A,E
	AND	07
	INC	A
	LD	B,A
	XOR	A
	SCF
LOOP:
	RRA
	DJNZ	LOOP
	POP	BC
	LD	C,A
	LD	A,B
	CP	00
	JR	NZ,CLEAR
	LD	A,C
	OR	(HL)
	LD	(HL),A
	RET
CLEAR:
	CP	01
	JR	NZ,REVERSE
	LD	A,C
	CPL
	AND	(HL)
	LD	(HL),A
	RET
REVERSE:
	CP	02
	JR	NZ,STATUS
	LD	A,C
	XOR	(HL)
	LD	(HL),A
	RET
STATUS:
	CP	03
	RET	NZ
	LD	A,C
	AND	(HL)
	LD	(_YM+1),A
	RET
;
;
_SYMB:
;
	LD	BC,SYMBOL
	CALL	XBIOS
	DW	RUN_SCR
	RET
;
SYMBOL:
	LD	HL,_TABLE
	LD	BC,0008H
	LD	DE,0000H
	LDIR
	RET
;
_TABLE:	DS	8
;
;
_GET:
;
	LD	BC,GETMAT
	CALL	XBIOS
	DW	RUN_SCR
	RET
;
GETMAT:
	LD	HL,0000H
	LD	BC,0008H
	LD	DE,_TABLE
	LDIR
	RET
;
;
_SCRACC:
	LD	BC,ACCESS
	CALL	XBIOS
	DW	RUN_SCR
	RET
;
ACCESS:
	LD	E,0		; (<- Column)
	LD	A,0		; (<- Row)
	LD	D,0
	RLCA
	RLA
	RLA
	RLA
	LD	L,A
	LD	A,D
	ADC	A,0B6H
	LD	H,A
	LD	A,(HL)
	INC	HL
	LD	H,(HL)
	LD	L,A
	EX	DE,HL
	ADD	HL,HL
	ADD	HL,HL
	ADD	HL,DE
	ADD	HL,HL
	LD	BC,0008H
	LD	A,0		; (<- Access Mode)
	CP	0		; (   = READ?)
	JR	NZ,WRITE
	LD	DE,_TABLE
	LDIR
	RET
WRITE:
	EX	DE,HL
	LD	HL,_TABLE
	LDIR
	RET
;
	.DEPHASE
	END

