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