Compucolor.org – Virtual Media

Listing of file='DEFPOP.MAC;06' on disk='vmedia/life2-sector.ccvf'

;=========================================================
;
;	DEFINE INITIAL POPULATION
;
;=========================================================
;
CURSCCI	EQU	8
NORMCCI	EQU	2
CR	EQU	13
INDIV	EQU	42	;INDIVIDUAL IN WORLD
BLANK	EQU	32
;
	EXTRN	CURSOR,ERASE,GETCH,INDEX,JMPTAB,LIMIT,OSTR
	EXTRN	CURSLOC
	EXTRN	BEGSC,ENDSC,CENTSC,BEGWR,ENDWR

	ENTRY	DEFPOP

DEFPOP:
	CALL	ERASE
	LXI	H,TOP1
	CALL	OSTR
	LXI	H,BOTT1
	CALL	OSTR		;SET UP INITIAL POPSCREEN
	LXI	H,CENTSC
	CALL	CURSOR		;PUT CURSOR IN CENTER OF SCREEN
DIPCHAR:
	CALL	GETCH
	CPI	'R'	;RUN COMMAND?
	RZ

	CPI	CR	;DEFINE INDIVIDUAL?
	JZ	DEFINE
	CPI	'0'	;  "        "
	JZ	DEFINE

DIP10:	STA	TEMP
	CPI	8	;CURSOR HOME?
	JZ	HOME
	CPI	'5'
	JZ	HOME

	LXI	H,CURDRN	;SEE IF VALID CURSOR DIRECTION
	CALL	INDEX
	JNZ	DIPCHAR		;BAD COMMAND
	LXI	H,CURADD
	CALL	JMPTAB		;GET OFFSET IN REFRESH RAM

MOVE:	LDA	TEMP	;SAVE LAST DIRECTION
	STA	LSTDIR
	CALL	LIMIT	;MAKE SURE NOT OFF SCREEN
	CNC	CURSOR	;MOVE CURSOR
	JMP	DIPCHAR	;DO IT AGAIN

DEFINE:	LHLD	CURSLOC
	MOV	A,M
	CPI	INDIV
	JZ	DEF10
	MVI	M,INDIV	;IF NOT ONE BEFORE, MAKE IT ONE NOW
	JMP	DEF20
DEF10:	MVI	M,BLANK	;IF IT WAS ONE, ERASE IT
DEF20:	LDA	LSTDIR	;MOVE CURSOR IN LAST DIRECTION
	JMP	DIP10

HOME:	LXI	H,CENTSC
	CALL	CURSOR
	MVI	A,8
	STA	LSTDIR
	JMP	DIPCHAR

;------------------------DATA-------------------------------
;
;	MESSAGES
;
TOP1:	DB	8,6,21H,11,3,20,0
	DB	'PRESS RETURN TO GENERATE AN INDIVIDUAL'
	DB	6,NORMCCI,239
BOTT1:	DB	3,0,31,6,21H,11,3,20,31
	DB	'PRESS R TO RUN'
	DB	6,NORMCCI,3,64,0,239
;
;	LIST OF VALID COMMANDS
;
CURDRN:
	DB	10	;CURSOR DOWN
	DB	25	;CURSOR RIGHT
	DB	26	;CURSOR LEFT
	DB	28	;CURSOR UP
	DB	'1'	;DOWN LEFT
	DB	'2'	;DOWN
	DB	'3'	;DOWN RIGHT
	DB	'4'	;LEFT
	DB	'6'	;RIGHT
	DB	'7'	;UP LEFT
	DB	'8'	;UP
	DB	'9'	;UP RIGHT
	DB	0
;
;	OFFSETS FROM CURRENT LOCATION IN REFRESH RAM FOR
;	A CURSOR MOVE COMMAND
;
CURADD:
	DW	128
	DW	2
	DW	-2
	DW	-128
	DW	126
	DW	128
	DW	130
	DW	-2
	DW	2
	DW	-130
	DW	-128
	DW	-126

TEMP:	DB	0	;TEMPORARY STORAGE
LSTDIR:	DB	0	;LAST DIRECTION

	END