1; LIFE .... VERSION 2.0 2; WRITTEN BY ED HALL 3; ASSEMBLED BY GORDEN FRENCH 4; AND RDM 5; 6; RETYPED FROM MANUAL APRIL 2015, UDO MUNK 7; THIS VERSION MODIFIED FOR ALTAIR 88SIO-2 8; 9; 10; CNTL-A IS USED TO DEPOSIT A CELL OF LIFE ON THE SCREEN. 11; CNTL-N, O, I AND H STEP THE CURSOR UP, DOWN, RIGHT, AND 12; LEFT RESPECTIVELY. CNTL-B CAN BE USED TO ERASE THE SCREEN. 13; ONCE THE INITIAL COLONY IS COMPLETE, CNTL-D IS USED TO 14; START THE EVOLUTION OF THE CELLS. DURING THE COLORFUL 15; EVOLUTION OF THE CELLS THE LETTER F ON YOUR KEYBOARD 16; CAN BE USED TO FREEZE THE PICTURE. HIT THE LETTER G TO 17; GO AND THE LETTER S TO STOP. 18 19RED EQU 9 20GREEN EQU 10 21BLUE EQU 12 22STACK EQU 800H 23DISPLY EQU 800H 24TIME EQU 0D800H 25;DAV EQU 32 ; FOR ALTAIR 88SIO REV 0 26;TBE EQU 2 27DAV EQU 1 ; FOR ALTAIR 88SIO-2 28TBE EQU 2 29DELAY EQU 0 30 31 JMP START 32START: LXI SP,STACK 33 CALL INIT 34MAN20: CALL SETUP 35MAN30: CALL GEN 36FRZE: IN 17 37 CPI 'F' 38 JZ FRZE 39 CALL CHANGE 40STP: IN 17 41 CPI 'S' 42 JZ MAN20 43MAN40: IN 255 44 RAL 45 JC MAN40 46 RAL 47 JC MAN20 48 JMP MAN30 49GEN: LXI B,0 50GEN20: CALL UPDATE 51 MVI A,64 52 INR C 53 CMP C 54 JNZ GEN20 55 MVI C,0 56 INR B 57 CMP B 58 JNZ GEN20 59 RET 60CHANGE: LXI B,0 61CHN15: CALL GTCOL 62 CPI RED 63 JNZ CHN20 64 MVI A,0 65 CALL PTCOL 66 JMP CHN30 67CHN20: CPI GREEN 68 JNZ CHN30 69 MVI A,BLUE 70 CALL PTCOL 71CHN30: MVI A,64 72 INR C 73 CMP C 74 JNZ CHN15 75 MVI C,0 76 INR B 77 CMP B 78 JNZ CHN15 79 RET 80CDISP: LXI H,DISPLY 81 LXI D,-2048 82CLEAR: MVI B,0 83FILL: MVI A,0 84FLL12: CMP D 85 JNZ FLL20 86 CMP E 87 RZ 88FLL20: MOV M,B 89 INX D 90 INX H 91 JMP FLL12 92UPDATE: PUSH B 93 MVI A,0 94 CMP C 95 JNZ UPD10 96 DCR C 97 CALL UPROW 98 STA ROWA 99 POP B 100 PUSH B 101 CALL UPROW 102 STA ROWB 103 POP B 104 PUSH B 105UPD10: INR C 106 CALL UPROW 107 LXI H,ROWB 108 MOV B,M 109 MOV M,A 110 ADD B 111 DCX H 112 MOV C,M 113 MOV M,B 114 ADD C 115 MOV D,A 116 POP B 117 RZ 118 PUSH D 119 CALL GTCOL 120 POP D 121 CPI 0 122 JZ UPD20 123 MOV A,D 124 CPI 3 125 RZ 126 CPI 4 127 RZ 128 MVI A,RED 129 JMP PTCOL 130UPD20: MOV A,D 131 CPI 3 132 RNZ 133 MVI A,GREEN 134 JMP PTCOL 135UPROW: DCR B 136 MVI D,0 137 CALL UPONE 138 INR B 139 CALL UPONE 140 INR B 141 CALL UPONE 142 MOV A,D 143 RET 144UPONE: PUSH D 145 CALL GTCOL 146 POP D 147 CPI 0 148 RZ 149 CPI 10 150 RZ 151 INR D 152 RET 153GTCOL: CALL FNDCOL 154 MOV A,M 155 JC GT20 156 ANI 15 157 RET 158GT20: ANI 240 159 RLC 160 RLC 161 RLC 162 RLC 163 RET 164PTCOL: ANI 15 165 DB 0F5H 166 CALL FNDCOL 167 POP D 168 JC PTC20 169 MOV A,M 170 ANI 240 171 ADD D 172 MOV M,A 173 RET 174PTC20: MOV A,D 175 RLC 176 RLC 177 RLC 178 RLC 179 MOV D,A 180 MOV A,M 181 ANI 15 182 ADD D 183 MOV M,A 184 RET 185FNDCOL: LXI H,DISPLY 186 MOV A,B 187 ANI 32 188 JZ FND20 189 LXI D,512 190 DAD D 191FND20: MOV A,C 192 ANI 32 193 JZ FND30 194 LXI D,1024 195 DAD D 196FND30: MOV A,C 197 ANI 31 198 RLC 199 RLC 200 RLC 201 RAL 202 MOV E,A 203 MVI A,0 204 RAL 205 MOV D,A 206 DAD D 207 MOV A,B 208 RAR 209 DB 0F5H 210 ANI 15 211 MOV E,A 212 MVI D,0 213 DAD D 214 DB 0F1H 215 RET 216CHECK: IN 16 217 ANI DAV 218 RNZ 219 INR C 220 JNZ CHECK 221 INR B 222 JNZ CHECK 223 RET 224TTYONE: IN 16 225 ANI TBE 226 JZ TTYONE 227 MOV A,B 228 OUT 17 229 RET 230TTYOUT: MOV B,M 231 MVI A,0 232 CMP B 233 RZ 234 CALL TTYONE 235 INX H 236 JMP TTYOUT 237INIT: CALL CDISP 238 MVI A,132 239 OUT 14 240 MVI A,176 241 OUT 15 242 LXI H,IDENT 243 CALL TTYOUT 244INT20: CALL CHECK 245; JZ INT20 ; INSERT JZ INT20 HERE FOR INST 246 IN 17 247 MOV B,A 248 CALL TTYONE 249 ANI 127 250 CPI 89 251 RET ; INSERT RZ HERE FOR INST 252 LXI H,INST 253 CALL TTYOUT 254SETUP: LXI H,ENTER 255 CALL TTYOUT 256 CALL CDISP 257 LXI B,0 258STP20: CALL GTCHR 259 LXI H,TAB 260 ANI 7FH 261 MOV D,A 262STP30: SUB A 263 CMP M 264 JZ STP20 265 MOV A,D 266 CMP M 267 JZ STP40 268 INX H 269 INX H 270 INX H 271 JMP STP30 272STP40: INX H 273 MOV E,M 274 INX H 275 MOV D,M 276 XCHG 277 CALL INDEX 278 JMP STP20 279INDEX: PCHL 280TAB: DB 1 281 DW ON 282 DB 2 283 DW OFF 284 DB 4 285 DW THRU 286 DB 8 287 DW BACK 288 DB 9 289 DW FWD 290 DB 15 291 DW DOWN 292 DB 11 293 DW HOME 294 DB 13 295 DW RETURN 296 DB 14 297 DW UP 298 DB 0 299 DB 0 300 DB 0 301 DB 0 302THRU: POP B 303 RET 304HOME: LXI B,0 305 RET 306RETURN: MVI B,0 307DOWN: INR C 308 RET 309ON: MVI A,15 310BOTH: CALL PTCOL 311FWD: INR B 312 RET 313OFF: MVI A,0 314 JMP BOTH 315UP: DCR C 316 RET 317BACK: DCR B 318 RET 319GTCHR: CALL GTCOL 320 DB 0F5H 321GTC20: PUSH B 322 MVI A,12 323 CALL PTCOL 324 LXI B,DELAY 325 CALL CHECK 326 JNZ GTC40 327 POP B 328 PUSH B 329 MVI A,0 330 CALL PTCOL 331 LXI B,DELAY 332 CALL CHECK 333 POP B 334 JZ GTC20 335GTC30: POP 6 336 CALL PTCOL 337 IN 17 338 OUT 17 339 RET 340GTC40: POP B 341 JMP GTC30 342ROWA: DW 0 343ROWB: DW 0 344IDENT: DW 'IL' 345 DW 'EF' 346 DW '..' 347 DW '..' 348 DW 'EV' 349 DW 'SR' 350 DW 'OI' 351 DW ' N' 352 DW '.2' 353 DW ' 0' 354 DW 0A0DH 355 DW 0A0AH 356 DW 0 357INST: DW 0 358ENTER: DW 'NE' 359 DW 'ET' 360 DW ' R' 361 DW 'AD' 362 DW 'AT' 363 DW 0A0DH 364 DW 0 365 366 END 367