Home » Personal collection » Acorn tapes » Electron_User » Electron_User_tape08a_acorn_eu_1990_february.wav » LIFE

LIFE

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Personal collection » Acorn tapes » Electron_User » Electron_User_tape08a_acorn_eu_1990_february.wav
Filename: LIFE
Read OK:
File size: 1D0D bytes
Load address: 2000
Exec address: 1900
Duplicates

There are 2 duplicate copies of this file in the archive:

File contents
   10REM Life
   20REM By John Geraghty
   30REM (c) Electron User
   40:
   50ON ERROR PROCerr
   60IF PAGE>&E00 PROCreloc
   70MODE2
   80MODE5
   90HIMEM=&3000
  100PROCinit
  110:
  120REPEAT
  130REPEAT
  140CALL breed
  150PROCinkeys
  160UNTIL S%
  170:
  180REPEAT
  190PROCinkeys
  200UNTIL INKEY-99 OR NOT S%
  210PROCnot_ink2(-99)
  220UNTIL FALSE
  230:
  240DEF PROCinkeys
  250IF INKEY-83 PROCtoggle_col
  260IF INKEY-35 PROCedit
  270IF INKEY-82 PROCtoggle_step
  280ENDPROC
  290:
  300DEF PROCnot_ink(n%)
  310VDU7
  320DEF PROCnot_ink2(n%)
  330REPEAT UNTIL NOT INKEYn%
  340ENDPROC
  350:
  360DEF PROCinit
  370PROCassemble
  380FOR L%=0 TO 38
  390?(times8+L%)=L%*8
  400NEXT
  410*FX214,1
  420*FX213,255
  430*FX16
  440VDU23,241,&E0,&E0,&E0;0;0;
  450*FX9,1
  460*FX10,1
  470VDU19,0,4;0;
  480VDU23,1,0;0;0;0;
  490C%=TRUE
  500S%=FALSE
  510PROCedit
  520PROCcolour
  530ENDPROC
  540:
  550DEF PROCedit
  560PROCnot_ink(-35)
  570PRINTTAB(0,31)SPC(19);
  580VDU19,2,7;0;19,1,4;0;
  590PROCgrid(TRUE)
  600VDU19,2,6;0;19,1,0;0;
  610GCOL3,7
  620X%=56:Y%=64
  630PROCcross1
  640PROCopt
  650:
  660REPEAT
  670PRINTTAB(0,31);SPC(10);TAB(0,31);"x:";(X%+8)DIV 32;TAB(5,31);"y:";(Y%-32)DIV 16;
  680F%=0
  690IF INKEY-83 PROCnot_ink(-83):C%=NOT C%:PROCopt
  700IF INKEY-82 PROCnot_ink(-82):S%=NOT S%:PROCopt
  710IF INKEY-74 MOVEX%+8,Y%+12:VDU5,241,4:F%=32
  720IF INKEY-35 F%=16
  730IF INKEY-67 F%=F% OR 1
  740IF INKEY-98 F%=F% OR 2
  750IF INKEY-73 F%=F% OR 4
  760IF INKEY-105F%=F% OR 8
  770IF INKEY-74 IF F%=32 GOTO 730
  780IF F%=0 OR F%=32 GOTO680
  790oldx%=X%:oldy%=Y%
  800IF F% AND 1 X%=X%+32:IF X%=1272 X%=-8
  810IF F% AND 2 X%=X%-32:IF X%=-40 X%=1240
  820IF F% AND 4 Y%=Y%+16:IF Y%=1024 Y%=32
  830IF F% AND 8 Y%=Y%-16:IF Y%=16 Y%=1008
  840PROCcross2
  850IF INKEY-1 F%=0:GOTO730
  860UNTIL F% AND 16
  870PROCnot_ink(-35)
  880PROCcross1
  890PROCgrid(FALSE)
  900PROCtitle
  910PROCcolour
  920!gen=1
  930ENDPROC
  940:
  950DEF PROCcross2
  960MOVEoldx%,32:DRAWoldx%,1023
  970MOVE0,oldy%:DRAW1280,oldy%
  980DEF PROCcross1
  990MOVEX%,32:DRAWX%,1023
 1000MOVE0,Y%:DRAW1280,Y%
 1010ENDPROC
 1020:
 1030DEF PROCgrid(X%)
 1040!scr=&100*?&34E
 1050X%=-15*X%
 1060CALL grid
 1070ENDPROC
 1080:
 1090DEF PROCtoggle_col
 1100PROCnot_ink(-83)
 1110C%=NOT C%
 1120DEF PROCcolour
 1130IF C% VDU19,2,2;0;19,1,10;0; ELSE VDU19,2,7;0;19,1,4;0;
 1140ENDPROC
 1150:
 1160DEF PROCtoggle_step
 1170PROCnot_ink(-82)
 1180S%=NOT S%
 1190ENDPROC
 1200:
 1210DEF PROCtitle
 1220GCOL0,7
 1230?&34E=&68 EOR ?&34E:?&351=?&34E
 1240PROCtitle2
 1250?&34E=&68 EOR ?&34E:?&351=?&34E
 1260DEF PROCtitle2
 1270MOVE0,32:DRAW1280,32
 1280PRINTTAB(0,31)"generation:";SPC(8);
 1290ENDPROC
 1300:
 1310DEF PROCopt
 1320PRINTTAB(11,31)SPC(8);
 1330COLOUR129:COLOUR2
 1340IF C% PRINTTAB(11,31)"Col";
 1350IF S% PRINTTAB(15,31)"Step";
 1360COLOUR128:COLOUR3
 1370ENDPROC
 1380:
 1390DEF PROCreloc
 1400OSCLI("KEY0 *TAPE|M F%=PAGE:T%=&E00:?TOP=13:REPEAT $T%=$F%:L%=LEN$T%+1:T%=T%+L%:F%=F%+L%:UNTIL F%>TOP|M PAGE=&E00|M OLD|M RUN|M")
 1410OSCLI("FX138,0,128"):END
 1420:
 1430DEF PROCerr
 1440ON ERROR OFF
 1450VDU22,6
 1460HIMEM=&6000
 1470*FX214,6
 1480*FX213,100
 1490REPORT:PRINT" at line ";ERL
 1500END
 1510:
 1520DEF PROCassemble
 1530REM &4F TO &9E used for data; this and other locations below temporarily free
 1540count=&4F
 1550status=&77
 1560scr=&70
 1570top=&E0
 1580mid=&F5
 1590bot=&F7
 1600cell=&3B
 1610row=&F9
 1620col=&1C
 1630temp=&1D
 1640print_no=&991F
 1650oswrch=&FFEE
 1660:
 1670FOR pass=0 TO 2 STEP2
 1680P%=&A00
 1690[OPT pass
 1700.breed
 1710\SEI (for speed) only if no flashing colours
 1720BCS not_sei
 1730SEI
 1740.not_sei
 1750\set row index
 1760LDX #&3D
 1770STX row
 1780:
 1790\hi or lo screen?
 1800INC index
 1810LDA index
 1820AND #1
 1830BEQ hi_scr
 1840:
 1850\top, mid, bot point to start of screen rows to get count of on cells
 1860LDX #&84
 1870STX mid
 1880LDX #&56
 1890STX mid+1
 1900LDX #0
 1910STX bot
 1920LDX #&31
 1930STX bot+1
 1940\cell points to other screen for plotting
 1950LDX #&BC
 1960STX cell
 1970LDX #&57
 1980STX cell+1
 1990STX cell+3
 2000STX cell+5
 2010BNE do_row
 2020:
 2030.hi_scr
 2040LDX #&84
 2050STX mid
 2060LDX #&7E
 2070STX mid+1
 2080LDX #0
 2090STX bot
 2100LDX #&59
 2110STX bot+1
 2120LDX #&BC
 2130STX cell
 2140LDX #&2F
 2150STX cell+1
 2160STX cell+3
 2170STX cell+5
 2180:
 2190.do_row
 2200\mid becomes top, top becomes bot, bot and cell incremented
 2210LDX mid
 2220STX top
 2230LDX mid+1
 2240STX top+1
 2250LDA bot
 2260STA mid
 2270LDA bot+1
 2280STA mid+1
 2290:
 2300LDA row
 2310AND #1
 2320BNE even
 2330:
 2340\odd row
 2350DEC cell+1
 2360DEC cell+3
 2370DEC cell+5
 2380LDA cell
 2390CLC
 2400ADC #4
 2410TAX
 2420STX cell
 2430INX
 2440STX cell+2
 2450INX
 2460STX cell+4
 2470:
 2480LDA row
 2490BEQ last_row
 2500LDA bot
 2510CLC
 2520ADC #&3C
 2530STA bot
 2540LDA bot+1
 2550ADC #1
 2560STA bot+1
 2570JMP not_last
 2580:
 2590.even
 2600LDA cell
 2610CLC
 2620ADC #&3C
 2630BCC notinc
 2640INC cell+1
 2650INC cell+3
 2660INC cell+5
 2670.notinc
 2680TAX
 2690STX cell
 2700INX
 2710STX cell+2
 2720INX
 2730STX cell+4
 2740:
 2750LDA bot
 2760CLC
 2770ADC #4
 2780STA bot
 2790BCC not_last
 2800:
 2810.last_row
 2820LDX #0
 2830STX bot
 2840LDX #&59
 2850STX bot+1
 2860LDA index
 2870AND #1
 2880BEQ not_last
 2890LDX #&31
 2900STX bot+1
 2910:
 2920.not_last
 2930\count holds sum of on cells above+below target cell
 2940LDA #0
 2950STA count
 2960STA status
 2970STA count+1
 2980STA status+1
 2990:
 3000\count gets data for extreme right cell, count+1 gets data for leftmost (for wraparound)
 3010LDY #&38
 3020LDA (top),Y
 3030BPL over1
 3040INC count
 3050.over1
 3060LDA (mid),Y
 3070BPL over2
 3080INC status
 3090.over2
 3100LDA (bot),Y
 3110BPL over3
 3120INC count
 3130.over3
 3140DEC top+1
 3150DEC mid+1
 3160DEC bot+1
 3170LDY #0
 3180LDA (top),Y
 3190BPL over4
 3200INC count+1
 3210.over4
 3220LDA (mid),Y
 3230BPL over5
 3240INC status+1
 3250.over5
 3260LDA (bot),Y
 3270BPL over6
 3280INC count+1
 3290.over6
 3300\set column index
 3310LDA #&26
 3320STA col
 3330:
 3340LDA top
 3350STA over7+1
 3360LDA top+1
 3370STA over7+2
 3380LDA mid
 3390STA over8+1
 3400LDA mid+1
 3410STA over8+2
 3420LDA bot
 3430STA over9+1
 3440LDA bot+1
 3450STA over9+2
 3460:
 3470INC top+1
 3480INC mid+1
 3490INC bot+1
 3500LDX #1
 3510:
 3520.do_cell
 3530\8 bytes between cells
 3540LDY times8,X
 3550BNE hi_ok
 3560INC cell+1
 3570INC cell+3
 3580INC cell+5
 3590INC over7+2
 3600INC over8+2
 3610INC over9+2
 3620:
 3630.hi_ok
 3640INX
 3650LDA #0
 3660STA count,X
 3670STA status,X
 3680CLC
 3690:
 3700.over7
 3710LDA &FFFF,Y
 3720\colours 2 and 3 signify ON
 3730BPL over8
 3740INC count,X
 3750.over8
 3760LDA &FFFF,Y
 3770BPL over9
 3780INC status,X
 3790SEC
 3800.over9
 3810LDA &FFFF,Y
 3820BPL get_count
 3830INC count,X
 3840:
 3850.get_count
 3860LDA count,X
 3870ADC count-1,X
 3880ADC count-2,X
 3890ADC status-2,X
 3900:
 3910.on_or_off
 3920STA temp
 3930ORA status-1,X
 3940ORA (cell),Y
 3950BEQ cell_ok
 3960LDA temp
 3970BEQ turn_off
 3980CMP #2
 3990BCC turn_off
 4000BNE not_maintain
 4010LDA status-1,X
 4020BEQ plot_cell
 4030.maintain_on
 4040LDA #&EE
 4050BNE plot_cell
 4060:
 4070.not_maintain
 4080CMP #3
 4090BEQ turn_on
 4100.turn_off
 4110\if already off, colour 0
 4120LDA status-1,X
 4130BEQ plot_cell
 4140\colour 1
 4150LDA #&0E
 4160BNE plot_cell
 4170.turn_on
 4180LDA status-1,X
 4190BNE maintain_on
 4200LDA #&E0
 4210:
 4220.plot_cell
 4230CMP (cell),Y
 4240BEQ cell_ok
 4250STA (cell),Y
 4260STA (cell+2),Y
 4270STA (cell+4),Y
 4280:
 4290.cell_ok
 4300DEC col
 4310BNE do_cell
 4320:
 4330\penultimate cell
 4340CPY #&38
 4350BEQ last_cell
 4360BCS end_of_row
 4370INX
 4380INC col
 4390LDY #&38
 4400CLC
 4410LDA count+38
 4420ADC status+38
 4430ADC count+39
 4440ADC count
 4450ADC status
 4460BPL on_or_off
 4470:
 4480.last_cell
 4490LDX #1
 4500INC col
 4510LDY #&40
 4520CLC
 4530LDA count+39
 4540ADC status+39
 4550ADC count
 4560ADC count+1
 4570ADC status+1
 4580BPL on_or_off
 4590:
 4600.end_of_row
 4610DEC row
 4620BMI end_of_screen
 4630JMP do_row
 4640:
 4650.end_of_screen
 4660LDA index
 4670AND #1
 4680BNE hi_screen
 4690:
 4700LDA #&18
 4710LDX #&30
 4720BNE screen_paras
 4730:
 4740.hi_screen
 4750LDA #&2C
 4760LDX #&58
 4770.screen_paras
 4780STA &FE03
 4790STX &34E
 4800STX &351
 4810\print generation number at TAB(12,31)
 4820LDA #31
 4830JSR oswrch
 4840LDA #12
 4850JSR oswrch
 4860LDA #31
 4870JSR oswrch
 4880LDA gen
 4890STA &2A
 4900LDA gen+1
 4910STA &2B
 4920JSR print_no
 4930:
 4940INC gen
 4950BNE cli
 4960INC gen+1
 4970.cli
 4980CLI
 4990RTS
 5000:
 5010.grid
 5020\grid for edit routine
 5030LDY #0
 5040.gloop
 5050TYA
 5060AND #3
 5070CMP #3
 5080BNE skip
 5090TXA
 5100JMP sta
 5110.skip
 5120LDA (scr),Y
 5130AND #&F0
 5140BEQ skip2
 5150LDA #&EE
 5160.skip2
 5170CPX #&0F
 5180ADC #0
 5190.sta
 5200STA (scr),Y
 5210CPY #&BF
 5220BNE gov
 5230LDA scr+1
 5240CMP #&7E
 5250BEQ cli
 5260CMP #&56
 5270BEQ cli
 5280.gov
 5290INY
 5300BNE gloop
 5310INC scr+1
 5320BPL gloop
 5330:
 5340.index
 5350EQUB &FF
 5360.gen
 5370EQUD 0
 5380.times8
 5390]:NEXT:ENDPROC


� Life
� By John Geraghty
� (c) Electron User
(:
2� � �err
<� �>&E00 �reloc
F�2
P�5
Z�=&3000
d	�init
n:
x�
��
�� breed
��inkeys
�� S%
�:
��
��inkeys
�� �-99 � � S%
��not_ink2(-99)
�� �
�:
�
� �inkeys
�� �-83 �toggle_col
� �-35 �edit
� �-82 �toggle_step
�
":
,� �not_ink(n%)
6�7
@� �not_ink2(n%)
J
� � � �n%
T�
^:
h� �init
r
�assemble
|� L%=0 � 38
�?(times8+L%)=L%*8
��
�*FX214,1
�*FX213,255
�	*FX16
��23,241,&E0,&E0,&E0;0;0;
�
*FX9,1
�*FX10,1
��19,0,4;0;
��23,1,0;0;0;0;
�C%=�
�S%=�
�	�edit
�colour
�
:
&� �edit
0�not_ink(-35)
:�0,31)�(19);
D�19,2,7;0;19,1,4;0;
N�grid(�)
X�19,2,6;0;19,1,0;0;
b�3,7
lX%=56:Y%=64
v�cross1
��opt
�:
��
�A�0,31);�(10);�0,31);"x:";(X%+8)� 32;�5,31);"y:";(Y%-32)� 16;
�F%=0
�%� �-83 �not_ink(-83):C%=� C%:�opt
�%� �-82 �not_ink(-82):S%=� S%:�opt
�%� �-74 �X%+8,Y%+12:�5,241,4:F%=32
�� �-35 F%=16
�� �-67 F%=F% � 1
�� �-98 F%=F% � 2
�� �-73 F%=F% � 4
�� �-105F%=F% � 8
� �-74 � F%=32 � �dZB
� F%=0 � F%=32 �thB
oldx%=X%:oldy%=Y%
 %� F% � 1 X%=X%+32:� X%=1272 X%=-8
*&� F% � 2 X%=X%-32:� X%=-40 X%=1240
4%� F% � 4 Y%=Y%+16:� Y%=1024 Y%=32
>%� F% � 8 Y%=Y%-16:� Y%=16 Y%=1008
H�cross2
R� �-1 F%=0:�dZB
\
� F% � 16
f�not_ink(-35)
p�cross1
z�grid(�)
�
�title
��colour
�
!gen=1
��
�:
�
� �cross2
��oldx%,32:�oldx%,1023
��0,oldy%:�1280,oldy%
�
� �cross1
��X%,32:�X%,1023
��0,Y%:�1280,Y%
��
�:
� �grid(X%)
!scr=&100*?&34E

X%=-15*X%
$
� grid
.�
8:
B� �toggle_col
L�not_ink(-83)
VC%=� C%
`
� �colour
j3� C% �19,2,2;0;19,1,10;0; � �19,2,7;0;19,1,4;0;
t�
~:
�� �toggle_step
��not_ink(-82)
�S%=� S%
��
�:
�� �title
��0,7
�!?&34E=&68 � ?&34E:?&351=?&34E
��title2
�!?&34E=&68 � ?&34E:?&351=?&34E
�
� �title2
��0,32:�1280,32
�0,31)"generation:";�(8);

�
:

� �opt
(�11,31)�(8);
2�129:�2
<� C% �11,31)"Col";
F� S% �15,31)"Step";
P�128:�3
Z�
d:
n� �reloc
x��("KEY0 *TAPE|M F%=PAGE:T%=&E00:?TOP=13:REPEAT $T%=$F%:L%=LEN$T%+1:T%=T%+L%:F%=F%+L%:UNTIL F%>TOP|M PAGE=&E00|M OLD|M RUN|M")
��("FX138,0,128"):�
�:
�
� �err
�	� � �
�	�22,6
��=&6000
�*FX214,6
�*FX213,100
��:�" at line ";�
��
�:
�� �assemble
�O� &4F TO &9E used for data; this and other locations below temporarily free

count=&4F
status=&77
scr=&70
"top=&E0
,mid=&F5
6bot=&F7
@cell=&3B
Jrow=&F9
Tcol=&1C
^temp=&1D
hprint_no=&991F
roswrch=&FFEE
|:
�� pass=0 � 2 �2
�P%=&A00
�
[OPT pass
�
.breed
�0\SEI (for speed) only if no flashing colours
�BCS not_sei
�SEI
�.not_sei
�\set row index
�LDX #&3D
�STX row
�:
�\hi or lo screen?

INC index

LDA index
� #1
&BEQ hi_scr
0:
:I\top, mid, bot point to start of screen rows to get count of on cells
DLDX #&84
NSTX mid
XLDX #&56
b
STX mid+1
l
LDX #0
vSTX bot
�LDX #&31
�
STX bot+1
�-\cell points to other screen for plotting
�LDX #&BC
�STX cell
�LDX #&57
�STX cell+1
�STX cell+3
�STX cell+5
�BNE do_row
�:
�.hi_scr
�LDX #&84
STX mid
LDX #&7E

STX mid+1
 
LDX #0
*STX bot
4LDX #&59
>
STX bot+1
HLDX #&BC
RSTX cell
\LDX #&2F
fSTX cell+1
pSTX cell+3
zSTX cell+5
�:
�.do_row
�?\mid becomes top, top becomes bot, bot and cell incremented
�LDX mid
�STX top
�
LDX mid+1
�
STX top+1
�LDA bot
�STA mid
�
LDA bot+1
�
STA mid+1
�:
�LDA row
	� #1
	BNE even
	:
	$\odd row
	.DEC cell+1
	8DEC cell+3
	BDEC cell+5
	LLDA cell
	VCLC
	`
ADC #4
	jTAX
	tSTX cell
	~INX
	�STX cell+2
	�INX
	�STX cell+4
	�:
	�LDA row
	�BEQ last_row
	�LDA bot
	�CLC
	�ADC #&3C
	�STA bot
	�
LDA bot+1
	�
ADC #1

STA bot+1

JMP not_last
:
	.even
(LDA cell
2CLC
<ADC #&3C
FBCC notinc
PINC cell+1
ZINC cell+3
dINC cell+5
n.notinc
xTAX
�STX cell
�INX
�STX cell+2
�INX
�STX cell+4
�:
�LDA bot
�CLC
�
ADC #4
�STA bot
�BCC not_last
�:
�
.last_row

LDX #0
STX bot
LDX #&59
"
STX bot+1
,
LDA index
6� #1
@BEQ not_last
JLDX #&31
T
STX bot+1
^:
h
.not_last
r8\count holds sum of on cells above+below target cell
|
LDA #0
�
STA count
�STA status
�STA count+1
�STA status+1
�:
�\\count gets data for extreme right cell, count+1 gets data for leftmost (for wraparound)
�LDY #&38
�LDA (top),Y
�
BPL over1
�
INC count
�
.over1
�LDA (mid),Y
�
BPL over2
INC status

.over2
LDA (bot),Y
&
BPL over3
0
INC count
:
.over3
D
DEC top+1
N
DEC mid+1
X
DEC bot+1
b
LDY #0
lLDA (top),Y
v
BPL over4
�INC count+1
�
.over4
�LDA (mid),Y
�
BPL over5
�INC status+1
�
.over5
�LDA (bot),Y
�
BPL over6
�INC count+1
�
.over6
�\set column index
�LDA #&26
�STA col

:

LDA top

STA over7+1

 
LDA top+1

*STA over7+2

4LDA mid

>STA over8+1

H
LDA mid+1

RSTA over8+2

\LDA bot

fSTA over9+1

p
LDA bot+1

zSTA over9+2

�:

�
INC top+1

�
INC mid+1

�
INC bot+1

�
LDX #1

�:

�.do_cell

�\8 bytes between cells

�LDY times8,X

�
BNE hi_ok

�INC cell+1

�INC cell+3

�INC cell+5
INC over7+2
INC over8+2
INC over9+2
$:
.
.hi_ok
8INX
B
LDA #0
LSTA count,X
VSTA status,X
`CLC
j:
t
.over7
~LDA &FFFF,Y
�\colours 2 and 3 signify �
�
BPL over8
�INC count,X
�
.over8
�LDA &FFFF,Y
�
BPL over9
�INC status,X
�SEC
�
.over9
�LDA &FFFF,Y
�BPL get_count
�INC count,X
:

.get_count
LDA count,X
ADC count-1,X
(ADC count-2,X
2ADC status-2,X
<:
F.on_or_off
PSTA temp
Z�A status-1,X
d�A (cell),Y
nBEQ cell_ok
xLDA temp
�BEQ turn_off
�
CMP #2
�BCC turn_off
�BNE not_maintain
�LDA status-1,X
�BEQ plot_cell
�.maintain_on
�LDA #&EE
�BNE plot_cell
�:
�.not_maintain
�
CMP #3
�BEQ turn_on

.turn_off
\if already off, colour 0
LDA status-1,X
"BEQ plot_cell
,
\colour 1
6LDA #&0E
@BNE plot_cell
J.turn_on
TLDA status-1,X
^BNE maintain_on
hLDA #&E0
r:
|.plot_cell
�CMP (cell),Y
�BEQ cell_ok
�STA (cell),Y
�STA (cell+2),Y
�STA (cell+4),Y
�:
�.cell_ok
�DEC col
�BNE do_cell
�:
�\penultimate cell
�CPY #&38
�BEQ last_cell
BCS end_of_row
INX
INC col
&LDY #&38
0CLC
:LDA count+38
DADC status+38
NADC count+39
X
ADC count
bADC status
lBPL on_or_off
v:
�.last_cell
�
LDX #1
�INC col
�LDY #&40
�CLC
�LDA count+39
�ADC status+39
�
ADC count
�ADC count+1
�ADC status+1
�BPL on_or_off
�:
�.end_of_row
DEC row
BMI end_of_screen
JMP do_row
 :
*.end_of_screen
4
LDA index
>� #1
HBNE hi_screen
R:
\LDA #&18
fLDX #&30
pBNE screen_paras
z:
�.hi_screen
�LDA #&2C
�LDX #&58
�.screen_paras
�
STA &FE03
�STX &34E
�STX &351
�'\print generation number at �12,31)
�LDA #31
�JSR oswrch
�LDA #12
�JSR oswrch
�LDA #31
JSR oswrch
LDA gen
STA &2A
$
LDA gen+1
.STA &2B
8JSR print_no
B:
LINC gen
VBNE cli
`
INC gen+1
j.cli
tCLI
~RTS
�:
�	.grid
�\grid for edit routine
�
LDY #0
�
.gloop
�TYA
�� #3
�
CMP #3
�BNE skip
�TXA
�JMP sta
�	.skip
LDA (scr),Y


� #&F0

BEQ skip2
LDA #&EE
(
.skip2
2CPX #&0F
<
ADC #0
F.sta
PSTA (scr),Y
ZCPY #&BF
dBNE gov
n
LDA scr+1
xCMP #&7E
�BEQ cli
�CMP #&56
�BEQ cli
�.gov
�INY
�
BNE gloop
�
INC scr+1
�
BPL gloop
�:
�
.index
�EQUB &FF
�.gen
�
EQUD 0
.times8
	]:�:�
�
00000000  0d 00 0a 0a f4 20 4c 69  66 65 0d 00 14 16 f4 20  |..... Life..... |
00000010  42 79 20 4a 6f 68 6e 20  47 65 72 61 67 68 74 79  |By John Geraghty|
00000020  0d 00 1e 17 f4 20 28 63  29 20 45 6c 65 63 74 72  |..... (c) Electr|
00000030  6f 6e 20 55 73 65 72 0d  00 28 05 3a 0d 00 32 0c  |on User..(.:..2.|
00000040  ee 20 85 20 f2 65 72 72  0d 00 3c 13 e7 20 90 3e  |. . .err..<.. .>|
00000050  26 45 30 30 20 f2 72 65  6c 6f 63 0d 00 46 06 eb  |&E00 .reloc..F..|
00000060  32 0d 00 50 06 eb 35 0d  00 5a 0b d3 3d 26 33 30  |2..P..5..Z..=&30|
00000070  30 30 0d 00 64 09 f2 69  6e 69 74 0d 00 6e 05 3a  |00..d..init..n.:|
00000080  0d 00 78 05 f5 0d 00 82  05 f5 0d 00 8c 0b d6 20  |..x............ |
00000090  62 72 65 65 64 0d 00 96  0b f2 69 6e 6b 65 79 73  |breed.....inkeys|
000000a0  0d 00 a0 08 fd 20 53 25  0d 00 aa 05 3a 0d 00 b4  |..... S%....:...|
000000b0  05 f5 0d 00 be 0b f2 69  6e 6b 65 79 73 0d 00 c8  |.......inkeys...|
000000c0  11 fd 20 a6 2d 39 39 20  84 20 ac 20 53 25 0d 00  |.. .-99 . . S%..|
000000d0  d2 12 f2 6e 6f 74 5f 69  6e 6b 32 28 2d 39 39 29  |...not_ink2(-99)|
000000e0  0d 00 dc 07 fd 20 a3 0d  00 e6 05 3a 0d 00 f0 0d  |..... .....:....|
000000f0  dd 20 f2 69 6e 6b 65 79  73 0d 00 fa 16 e7 20 a6  |. .inkeys..... .|
00000100  2d 38 33 20 f2 74 6f 67  67 6c 65 5f 63 6f 6c 0d  |-83 .toggle_col.|
00000110  01 04 10 e7 20 a6 2d 33  35 20 f2 65 64 69 74 0d  |.... .-35 .edit.|
00000120  01 0e 17 e7 20 a6 2d 38  32 20 f2 74 6f 67 67 6c  |.... .-82 .toggl|
00000130  65 5f 73 74 65 70 0d 01  18 05 e1 0d 01 22 05 3a  |e_step.......".:|
00000140  0d 01 2c 12 dd 20 f2 6e  6f 74 5f 69 6e 6b 28 6e  |..,.. .not_ink(n|
00000150  25 29 0d 01 36 06 ef 37  0d 01 40 13 dd 20 f2 6e  |%)..6..7..@.. .n|
00000160  6f 74 5f 69 6e 6b 32 28  6e 25 29 0d 01 4a 0d f5  |ot_ink2(n%)..J..|
00000170  20 fd 20 ac 20 a6 6e 25  0d 01 54 05 e1 0d 01 5e  | . . .n%..T....^|
00000180  05 3a 0d 01 68 0b dd 20  f2 69 6e 69 74 0d 01 72  |.:..h.. .init..r|
00000190  0d f2 61 73 73 65 6d 62  6c 65 0d 01 7c 0f e3 20  |..assemble..|.. |
000001a0  4c 25 3d 30 20 b8 20 33  38 0d 01 86 15 3f 28 74  |L%=0 . 38....?(t|
000001b0  69 6d 65 73 38 2b 4c 25  29 3d 4c 25 2a 38 0d 01  |imes8+L%)=L%*8..|
000001c0  90 05 ed 0d 01 9a 0c 2a  46 58 32 31 34 2c 31 0d  |.......*FX214,1.|
000001d0  01 a4 0e 2a 46 58 32 31  33 2c 32 35 35 0d 01 ae  |...*FX213,255...|
000001e0  09 2a 46 58 31 36 0d 01  b8 1c ef 32 33 2c 32 34  |.*FX16.....23,24|
000001f0  31 2c 26 45 30 2c 26 45  30 2c 26 45 30 3b 30 3b  |1,&E0,&E0,&E0;0;|
00000200  30 3b 0d 01 c2 0a 2a 46  58 39 2c 31 0d 01 cc 0b  |0;....*FX9,1....|
00000210  2a 46 58 31 30 2c 31 0d  01 d6 0e ef 31 39 2c 30  |*FX10,1.....19,0|
00000220  2c 34 3b 30 3b 0d 01 e0  12 ef 32 33 2c 31 2c 30  |,4;0;.....23,1,0|
00000230  3b 30 3b 30 3b 30 3b 0d  01 ea 08 43 25 3d b9 0d  |;0;0;0;....C%=..|
00000240  01 f4 08 53 25 3d a3 0d  01 fe 09 f2 65 64 69 74  |...S%=......edit|
00000250  0d 02 08 0b f2 63 6f 6c  6f 75 72 0d 02 12 05 e1  |.....colour.....|
00000260  0d 02 1c 05 3a 0d 02 26  0b dd 20 f2 65 64 69 74  |....:..&.. .edit|
00000270  0d 02 30 11 f2 6e 6f 74  5f 69 6e 6b 28 2d 33 35  |..0..not_ink(-35|
00000280  29 0d 02 3a 11 f1 8a 30  2c 33 31 29 89 28 31 39  |)..:...0,31).(19|
00000290  29 3b 0d 02 44 17 ef 31  39 2c 32 2c 37 3b 30 3b  |);..D..19,2,7;0;|
000002a0  31 39 2c 31 2c 34 3b 30  3b 0d 02 4e 0c f2 67 72  |19,1,4;0;..N..gr|
000002b0  69 64 28 b9 29 0d 02 58  17 ef 31 39 2c 32 2c 36  |id(.)..X..19,2,6|
000002c0  3b 30 3b 31 39 2c 31 2c  30 3b 30 3b 0d 02 62 08  |;0;19,1,0;0;..b.|
000002d0  e6 33 2c 37 0d 02 6c 0f  58 25 3d 35 36 3a 59 25  |.3,7..l.X%=56:Y%|
000002e0  3d 36 34 0d 02 76 0b f2  63 72 6f 73 73 31 0d 02  |=64..v..cross1..|
000002f0  80 08 f2 6f 70 74 0d 02  8a 05 3a 0d 02 94 05 f5  |...opt....:.....|
00000300  0d 02 9e 41 f1 8a 30 2c  33 31 29 3b 89 28 31 30  |...A..0,31);.(10|
00000310  29 3b 8a 30 2c 33 31 29  3b 22 78 3a 22 3b 28 58  |);.0,31);"x:";(X|
00000320  25 2b 38 29 81 20 33 32  3b 8a 35 2c 33 31 29 3b  |%+8). 32;.5,31);|
00000330  22 79 3a 22 3b 28 59 25  2d 33 32 29 81 20 31 36  |"y:";(Y%-32). 16|
00000340  3b 0d 02 a8 08 46 25 3d  30 0d 02 b2 25 e7 20 a6  |;....F%=0...%. .|
00000350  2d 38 33 20 f2 6e 6f 74  5f 69 6e 6b 28 2d 38 33  |-83 .not_ink(-83|
00000360  29 3a 43 25 3d ac 20 43  25 3a f2 6f 70 74 0d 02  |):C%=. C%:.opt..|
00000370  bc 25 e7 20 a6 2d 38 32  20 f2 6e 6f 74 5f 69 6e  |.%. .-82 .not_in|
00000380  6b 28 2d 38 32 29 3a 53  25 3d ac 20 53 25 3a f2  |k(-82):S%=. S%:.|
00000390  6f 70 74 0d 02 c6 25 e7  20 a6 2d 37 34 20 ec 58  |opt...%. .-74 .X|
000003a0  25 2b 38 2c 59 25 2b 31  32 3a ef 35 2c 32 34 31  |%+8,Y%+12:.5,241|
000003b0  2c 34 3a 46 25 3d 33 32  0d 02 d0 10 e7 20 a6 2d  |,4:F%=32..... .-|
000003c0  33 35 20 46 25 3d 31 36  0d 02 da 14 e7 20 a6 2d  |35 F%=16..... .-|
000003d0  36 37 20 46 25 3d 46 25  20 84 20 31 0d 02 e4 14  |67 F%=F% . 1....|
000003e0  e7 20 a6 2d 39 38 20 46  25 3d 46 25 20 84 20 32  |. .-98 F%=F% . 2|
000003f0  0d 02 ee 14 e7 20 a6 2d  37 33 20 46 25 3d 46 25  |..... .-73 F%=F%|
00000400  20 84 20 34 0d 02 f8 14  e7 20 a6 2d 31 30 35 46  | . 4..... .-105F|
00000410  25 3d 46 25 20 84 20 38  0d 03 02 19 e7 20 a6 2d  |%=F% . 8..... .-|
00000420  37 34 20 e7 20 46 25 3d  33 32 20 e5 20 8d 64 5a  |74 . F%=32 . .dZ|
00000430  42 0d 03 0c 18 e7 20 46  25 3d 30 20 84 20 46 25  |B..... F%=0 . F%|
00000440  3d 33 32 20 e5 8d 74 68  42 0d 03 16 15 6f 6c 64  |=32 ..thB....old|
00000450  78 25 3d 58 25 3a 6f 6c  64 79 25 3d 59 25 0d 03  |x%=X%:oldy%=Y%..|
00000460  20 25 e7 20 46 25 20 80  20 31 20 58 25 3d 58 25  | %. F% . 1 X%=X%|
00000470  2b 33 32 3a e7 20 58 25  3d 31 32 37 32 20 58 25  |+32:. X%=1272 X%|
00000480  3d 2d 38 0d 03 2a 26 e7  20 46 25 20 80 20 32 20  |=-8..*&. F% . 2 |
00000490  58 25 3d 58 25 2d 33 32  3a e7 20 58 25 3d 2d 34  |X%=X%-32:. X%=-4|
000004a0  30 20 58 25 3d 31 32 34  30 0d 03 34 25 e7 20 46  |0 X%=1240..4%. F|
000004b0  25 20 80 20 34 20 59 25  3d 59 25 2b 31 36 3a e7  |% . 4 Y%=Y%+16:.|
000004c0  20 59 25 3d 31 30 32 34  20 59 25 3d 33 32 0d 03  | Y%=1024 Y%=32..|
000004d0  3e 25 e7 20 46 25 20 80  20 38 20 59 25 3d 59 25  |>%. F% . 8 Y%=Y%|
000004e0  2d 31 36 3a e7 20 59 25  3d 31 36 20 59 25 3d 31  |-16:. Y%=16 Y%=1|
000004f0  30 30 38 0d 03 48 0b f2  63 72 6f 73 73 32 0d 03  |008..H..cross2..|
00000500  52 14 e7 20 a6 2d 31 20  46 25 3d 30 3a e5 8d 64  |R.. .-1 F%=0:..d|
00000510  5a 42 0d 03 5c 0d fd 20  46 25 20 80 20 31 36 0d  |ZB..\.. F% . 16.|
00000520  03 66 11 f2 6e 6f 74 5f  69 6e 6b 28 2d 33 35 29  |.f..not_ink(-35)|
00000530  0d 03 70 0b f2 63 72 6f  73 73 31 0d 03 7a 0c f2  |..p..cross1..z..|
00000540  67 72 69 64 28 a3 29 0d  03 84 0a f2 74 69 74 6c  |grid(.).....titl|
00000550  65 0d 03 8e 0b f2 63 6f  6c 6f 75 72 0d 03 98 0a  |e.....colour....|
00000560  21 67 65 6e 3d 31 0d 03  a2 05 e1 0d 03 ac 05 3a  |!gen=1.........:|
00000570  0d 03 b6 0d dd 20 f2 63  72 6f 73 73 32 0d 03 c0  |..... .cross2...|
00000580  19 ec 6f 6c 64 78 25 2c  33 32 3a df 6f 6c 64 78  |..oldx%,32:.oldx|
00000590  25 2c 31 30 32 33 0d 03  ca 18 ec 30 2c 6f 6c 64  |%,1023.....0,old|
000005a0  79 25 3a df 31 32 38 30  2c 6f 6c 64 79 25 0d 03  |y%:.1280,oldy%..|
000005b0  d4 0d dd 20 f2 63 72 6f  73 73 31 0d 03 de 13 ec  |... .cross1.....|
000005c0  58 25 2c 33 32 3a df 58  25 2c 31 30 32 33 0d 03  |X%,32:.X%,1023..|
000005d0  e8 12 ec 30 2c 59 25 3a  df 31 32 38 30 2c 59 25  |...0,Y%:.1280,Y%|
000005e0  0d 03 f2 05 e1 0d 03 fc  05 3a 0d 04 06 0f dd 20  |.........:..... |
000005f0  f2 67 72 69 64 28 58 25  29 0d 04 10 13 21 73 63  |.grid(X%)....!sc|
00000600  72 3d 26 31 30 30 2a 3f  26 33 34 45 0d 04 1a 0d  |r=&100*?&34E....|
00000610  58 25 3d 2d 31 35 2a 58  25 0d 04 24 0a d6 20 67  |X%=-15*X%..$.. g|
00000620  72 69 64 0d 04 2e 05 e1  0d 04 38 05 3a 0d 04 42  |rid.......8.:..B|
00000630  11 dd 20 f2 74 6f 67 67  6c 65 5f 63 6f 6c 0d 04  |.. .toggle_col..|
00000640  4c 11 f2 6e 6f 74 5f 69  6e 6b 28 2d 38 33 29 0d  |L..not_ink(-83).|
00000650  04 56 0b 43 25 3d ac 20  43 25 0d 04 60 0d dd 20  |.V.C%=. C%..`.. |
00000660  f2 63 6f 6c 6f 75 72 0d  04 6a 33 e7 20 43 25 20  |.colour..j3. C% |
00000670  ef 31 39 2c 32 2c 32 3b  30 3b 31 39 2c 31 2c 31  |.19,2,2;0;19,1,1|
00000680  30 3b 30 3b 20 8b 20 ef  31 39 2c 32 2c 37 3b 30  |0;0; . .19,2,7;0|
00000690  3b 31 39 2c 31 2c 34 3b  30 3b 0d 04 74 05 e1 0d  |;19,1,4;0;..t...|
000006a0  04 7e 05 3a 0d 04 88 12  dd 20 f2 74 6f 67 67 6c  |.~.:..... .toggl|
000006b0  65 5f 73 74 65 70 0d 04  92 11 f2 6e 6f 74 5f 69  |e_step.....not_i|
000006c0  6e 6b 28 2d 38 32 29 0d  04 9c 0b 53 25 3d ac 20  |nk(-82)....S%=. |
000006d0  53 25 0d 04 a6 05 e1 0d  04 b0 05 3a 0d 04 ba 0c  |S%.........:....|
000006e0  dd 20 f2 74 69 74 6c 65  0d 04 c4 08 e6 30 2c 37  |. .title.....0,7|
000006f0  0d 04 ce 21 3f 26 33 34  45 3d 26 36 38 20 82 20  |...!?&34E=&68 . |
00000700  3f 26 33 34 45 3a 3f 26  33 35 31 3d 3f 26 33 34  |?&34E:?&351=?&34|
00000710  45 0d 04 d8 0b f2 74 69  74 6c 65 32 0d 04 e2 21  |E.....title2...!|
00000720  3f 26 33 34 45 3d 26 36  38 20 82 20 3f 26 33 34  |?&34E=&68 . ?&34|
00000730  45 3a 3f 26 33 35 31 3d  3f 26 33 34 45 0d 04 ec  |E:?&351=?&34E...|
00000740  0d dd 20 f2 74 69 74 6c  65 32 0d 04 f6 12 ec 30  |.. .title2.....0|
00000750  2c 33 32 3a df 31 32 38  30 2c 33 32 0d 05 00 1e  |,32:.1280,32....|
00000760  f1 8a 30 2c 33 31 29 22  67 65 6e 65 72 61 74 69  |..0,31)"generati|
00000770  6f 6e 3a 22 3b 89 28 38  29 3b 0d 05 0a 05 e1 0d  |on:";.(8);......|
00000780  05 14 05 3a 0d 05 1e 0a  dd 20 f2 6f 70 74 0d 05  |...:..... .opt..|
00000790  28 11 f1 8a 31 31 2c 33  31 29 89 28 38 29 3b 0d  |(...11,31).(8);.|
000007a0  05 32 0b fb 31 32 39 3a  fb 32 0d 05 3c 17 e7 20  |.2..129:.2..<.. |
000007b0  43 25 20 f1 8a 31 31 2c  33 31 29 22 43 6f 6c 22  |C% ..11,31)"Col"|
000007c0  3b 0d 05 46 18 e7 20 53  25 20 f1 8a 31 35 2c 33  |;..F.. S% ..15,3|
000007d0  31 29 22 53 74 65 70 22  3b 0d 05 50 0b fb 31 32  |1)"Step";..P..12|
000007e0  38 3a fb 33 0d 05 5a 05  e1 0d 05 64 05 3a 0d 05  |8:.3..Z....d.:..|
000007f0  6e 0c dd 20 f2 72 65 6c  6f 63 0d 05 78 81 ff 28  |n.. .reloc..x..(|
00000800  22 4b 45 59 30 20 2a 54  41 50 45 7c 4d 20 46 25  |"KEY0 *TAPE|M F%|
00000810  3d 50 41 47 45 3a 54 25  3d 26 45 30 30 3a 3f 54  |=PAGE:T%=&E00:?T|
00000820  4f 50 3d 31 33 3a 52 45  50 45 41 54 20 24 54 25  |OP=13:REPEAT $T%|
00000830  3d 24 46 25 3a 4c 25 3d  4c 45 4e 24 54 25 2b 31  |=$F%:L%=LEN$T%+1|
00000840  3a 54 25 3d 54 25 2b 4c  25 3a 46 25 3d 46 25 2b  |:T%=T%+L%:F%=F%+|
00000850  4c 25 3a 55 4e 54 49 4c  20 46 25 3e 54 4f 50 7c  |L%:UNTIL F%>TOP||
00000860  4d 20 50 41 47 45 3d 26  45 30 30 7c 4d 20 4f 4c  |M PAGE=&E00|M OL|
00000870  44 7c 4d 20 52 55 4e 7c  4d 22 29 0d 05 82 16 ff  |D|M RUN|M").....|
00000880  28 22 46 58 31 33 38 2c  30 2c 31 32 38 22 29 3a  |("FX138,0,128"):|
00000890  e0 0d 05 8c 05 3a 0d 05  96 0a dd 20 f2 65 72 72  |.....:..... .err|
000008a0  0d 05 a0 09 ee 20 85 20  87 0d 05 aa 09 ef 32 32  |..... . ......22|
000008b0  2c 36 0d 05 b4 0b d3 3d  26 36 30 30 30 0d 05 be  |,6.....=&6000...|
000008c0  0c 2a 46 58 32 31 34 2c  36 0d 05 c8 0e 2a 46 58  |.*FX214,6....*FX|
000008d0  32 31 33 2c 31 30 30 0d  05 d2 14 f6 3a f1 22 20  |213,100.....:." |
000008e0  61 74 20 6c 69 6e 65 20  22 3b 9e 0d 05 dc 05 e0  |at line ";......|
000008f0  0d 05 e6 05 3a 0d 05 f0  0f dd 20 f2 61 73 73 65  |....:..... .asse|
00000900  6d 62 6c 65 0d 05 fa 4f  f4 20 26 34 46 20 54 4f  |mble...O. &4F TO|
00000910  20 26 39 45 20 75 73 65  64 20 66 6f 72 20 64 61  | &9E used for da|
00000920  74 61 3b 20 74 68 69 73  20 61 6e 64 20 6f 74 68  |ta; this and oth|
00000930  65 72 20 6c 6f 63 61 74  69 6f 6e 73 20 62 65 6c  |er locations bel|
00000940  6f 77 20 74 65 6d 70 6f  72 61 72 69 6c 79 20 66  |ow temporarily f|
00000950  72 65 65 0d 06 04 0d 63  6f 75 6e 74 3d 26 34 46  |ree....count=&4F|
00000960  0d 06 0e 0e 73 74 61 74  75 73 3d 26 37 37 0d 06  |....status=&77..|
00000970  18 0b 73 63 72 3d 26 37  30 0d 06 22 0b 74 6f 70  |..scr=&70..".top|
00000980  3d 26 45 30 0d 06 2c 0b  6d 69 64 3d 26 46 35 0d  |=&E0..,.mid=&F5.|
00000990  06 36 0b 62 6f 74 3d 26  46 37 0d 06 40 0c 63 65  |.6.bot=&F7..@.ce|
000009a0  6c 6c 3d 26 33 42 0d 06  4a 0b 72 6f 77 3d 26 46  |ll=&3B..J.row=&F|
000009b0  39 0d 06 54 0b 63 6f 6c  3d 26 31 43 0d 06 5e 0c  |9..T.col=&1C..^.|
000009c0  74 65 6d 70 3d 26 31 44  0d 06 68 12 70 72 69 6e  |temp=&1D..h.prin|
000009d0  74 5f 6e 6f 3d 26 39 39  31 46 0d 06 72 10 6f 73  |t_no=&991F..r.os|
000009e0  77 72 63 68 3d 26 46 46  45 45 0d 06 7c 05 3a 0d  |wrch=&FFEE..|.:.|
000009f0  06 86 13 e3 20 70 61 73  73 3d 30 20 b8 20 32 20  |.... pass=0 . 2 |
00000a00  88 32 0d 06 90 0b 50 25  3d 26 41 30 30 0d 06 9a  |.2....P%=&A00...|
00000a10  0d 5b 4f 50 54 20 70 61  73 73 0d 06 a4 0a 2e 62  |.[OPT pass.....b|
00000a20  72 65 65 64 0d 06 ae 30  5c 53 45 49 20 28 66 6f  |reed...0\SEI (fo|
00000a30  72 20 73 70 65 65 64 29  20 6f 6e 6c 79 20 69 66  |r speed) only if|
00000a40  20 6e 6f 20 66 6c 61 73  68 69 6e 67 20 63 6f 6c  | no flashing col|
00000a50  6f 75 72 73 0d 06 b8 0f  42 43 53 20 6e 6f 74 5f  |ours....BCS not_|
00000a60  73 65 69 0d 06 c2 07 53  45 49 0d 06 cc 0c 2e 6e  |sei....SEI.....n|
00000a70  6f 74 5f 73 65 69 0d 06  d6 12 5c 73 65 74 20 72  |ot_sei....\set r|
00000a80  6f 77 20 69 6e 64 65 78  0d 06 e0 0c 4c 44 58 20  |ow index....LDX |
00000a90  23 26 33 44 0d 06 ea 0b  53 54 58 20 72 6f 77 0d  |#&3D....STX row.|
00000aa0  06 f4 05 3a 0d 06 fe 15  5c 68 69 20 6f 72 20 6c  |...:....\hi or l|
00000ab0  6f 20 73 63 72 65 65 6e  3f 0d 07 08 0d 49 4e 43  |o screen?....INC|
00000ac0  20 69 6e 64 65 78 0d 07  12 0d 4c 44 41 20 69 6e  | index....LDA in|
00000ad0  64 65 78 0d 07 1c 08 80  20 23 31 0d 07 26 0e 42  |dex..... #1..&.B|
00000ae0  45 51 20 68 69 5f 73 63  72 0d 07 30 05 3a 0d 07  |EQ hi_scr..0.:..|
00000af0  3a 49 5c 74 6f 70 2c 20  6d 69 64 2c 20 62 6f 74  |:I\top, mid, bot|
00000b00  20 70 6f 69 6e 74 20 74  6f 20 73 74 61 72 74 20  | point to start |
00000b10  6f 66 20 73 63 72 65 65  6e 20 72 6f 77 73 20 74  |of screen rows t|
00000b20  6f 20 67 65 74 20 63 6f  75 6e 74 20 6f 66 20 6f  |o get count of o|
00000b30  6e 20 63 65 6c 6c 73 0d  07 44 0c 4c 44 58 20 23  |n cells..D.LDX #|
00000b40  26 38 34 0d 07 4e 0b 53  54 58 20 6d 69 64 0d 07  |&84..N.STX mid..|
00000b50  58 0c 4c 44 58 20 23 26  35 36 0d 07 62 0d 53 54  |X.LDX #&56..b.ST|
00000b60  58 20 6d 69 64 2b 31 0d  07 6c 0a 4c 44 58 20 23  |X mid+1..l.LDX #|
00000b70  30 0d 07 76 0b 53 54 58  20 62 6f 74 0d 07 80 0c  |0..v.STX bot....|
00000b80  4c 44 58 20 23 26 33 31  0d 07 8a 0d 53 54 58 20  |LDX #&31....STX |
00000b90  62 6f 74 2b 31 0d 07 94  2d 5c 63 65 6c 6c 20 70  |bot+1...-\cell p|
00000ba0  6f 69 6e 74 73 20 74 6f  20 6f 74 68 65 72 20 73  |oints to other s|
00000bb0  63 72 65 65 6e 20 66 6f  72 20 70 6c 6f 74 74 69  |creen for plotti|
00000bc0  6e 67 0d 07 9e 0c 4c 44  58 20 23 26 42 43 0d 07  |ng....LDX #&BC..|
00000bd0  a8 0c 53 54 58 20 63 65  6c 6c 0d 07 b2 0c 4c 44  |..STX cell....LD|
00000be0  58 20 23 26 35 37 0d 07  bc 0e 53 54 58 20 63 65  |X #&57....STX ce|
00000bf0  6c 6c 2b 31 0d 07 c6 0e  53 54 58 20 63 65 6c 6c  |ll+1....STX cell|
00000c00  2b 33 0d 07 d0 0e 53 54  58 20 63 65 6c 6c 2b 35  |+3....STX cell+5|
00000c10  0d 07 da 0e 42 4e 45 20  64 6f 5f 72 6f 77 0d 07  |....BNE do_row..|
00000c20  e4 05 3a 0d 07 ee 0b 2e  68 69 5f 73 63 72 0d 07  |..:.....hi_scr..|
00000c30  f8 0c 4c 44 58 20 23 26  38 34 0d 08 02 0b 53 54  |..LDX #&84....ST|
00000c40  58 20 6d 69 64 0d 08 0c  0c 4c 44 58 20 23 26 37  |X mid....LDX #&7|
00000c50  45 0d 08 16 0d 53 54 58  20 6d 69 64 2b 31 0d 08  |E....STX mid+1..|
00000c60  20 0a 4c 44 58 20 23 30  0d 08 2a 0b 53 54 58 20  | .LDX #0..*.STX |
00000c70  62 6f 74 0d 08 34 0c 4c  44 58 20 23 26 35 39 0d  |bot..4.LDX #&59.|
00000c80  08 3e 0d 53 54 58 20 62  6f 74 2b 31 0d 08 48 0c  |.>.STX bot+1..H.|
00000c90  4c 44 58 20 23 26 42 43  0d 08 52 0c 53 54 58 20  |LDX #&BC..R.STX |
00000ca0  63 65 6c 6c 0d 08 5c 0c  4c 44 58 20 23 26 32 46  |cell..\.LDX #&2F|
00000cb0  0d 08 66 0e 53 54 58 20  63 65 6c 6c 2b 31 0d 08  |..f.STX cell+1..|
00000cc0  70 0e 53 54 58 20 63 65  6c 6c 2b 33 0d 08 7a 0e  |p.STX cell+3..z.|
00000cd0  53 54 58 20 63 65 6c 6c  2b 35 0d 08 84 05 3a 0d  |STX cell+5....:.|
00000ce0  08 8e 0b 2e 64 6f 5f 72  6f 77 0d 08 98 3f 5c 6d  |....do_row...?\m|
00000cf0  69 64 20 62 65 63 6f 6d  65 73 20 74 6f 70 2c 20  |id becomes top, |
00000d00  74 6f 70 20 62 65 63 6f  6d 65 73 20 62 6f 74 2c  |top becomes bot,|
00000d10  20 62 6f 74 20 61 6e 64  20 63 65 6c 6c 20 69 6e  | bot and cell in|
00000d20  63 72 65 6d 65 6e 74 65  64 0d 08 a2 0b 4c 44 58  |cremented....LDX|
00000d30  20 6d 69 64 0d 08 ac 0b  53 54 58 20 74 6f 70 0d  | mid....STX top.|
00000d40  08 b6 0d 4c 44 58 20 6d  69 64 2b 31 0d 08 c0 0d  |...LDX mid+1....|
00000d50  53 54 58 20 74 6f 70 2b  31 0d 08 ca 0b 4c 44 41  |STX top+1....LDA|
00000d60  20 62 6f 74 0d 08 d4 0b  53 54 41 20 6d 69 64 0d  | bot....STA mid.|
00000d70  08 de 0d 4c 44 41 20 62  6f 74 2b 31 0d 08 e8 0d  |...LDA bot+1....|
00000d80  53 54 41 20 6d 69 64 2b  31 0d 08 f2 05 3a 0d 08  |STA mid+1....:..|
00000d90  fc 0b 4c 44 41 20 72 6f  77 0d 09 06 08 80 20 23  |..LDA row..... #|
00000da0  31 0d 09 10 0c 42 4e 45  20 65 76 65 6e 0d 09 1a  |1....BNE even...|
00000db0  05 3a 0d 09 24 0c 5c 6f  64 64 20 72 6f 77 0d 09  |.:..$.\odd row..|
00000dc0  2e 0e 44 45 43 20 63 65  6c 6c 2b 31 0d 09 38 0e  |..DEC cell+1..8.|
00000dd0  44 45 43 20 63 65 6c 6c  2b 33 0d 09 42 0e 44 45  |DEC cell+3..B.DE|
00000de0  43 20 63 65 6c 6c 2b 35  0d 09 4c 0c 4c 44 41 20  |C cell+5..L.LDA |
00000df0  63 65 6c 6c 0d 09 56 07  43 4c 43 0d 09 60 0a 41  |cell..V.CLC..`.A|
00000e00  44 43 20 23 34 0d 09 6a  07 54 41 58 0d 09 74 0c  |DC #4..j.TAX..t.|
00000e10  53 54 58 20 63 65 6c 6c  0d 09 7e 07 49 4e 58 0d  |STX cell..~.INX.|
00000e20  09 88 0e 53 54 58 20 63  65 6c 6c 2b 32 0d 09 92  |...STX cell+2...|
00000e30  07 49 4e 58 0d 09 9c 0e  53 54 58 20 63 65 6c 6c  |.INX....STX cell|
00000e40  2b 34 0d 09 a6 05 3a 0d  09 b0 0b 4c 44 41 20 72  |+4....:....LDA r|
00000e50  6f 77 0d 09 ba 10 42 45  51 20 6c 61 73 74 5f 72  |ow....BEQ last_r|
00000e60  6f 77 0d 09 c4 0b 4c 44  41 20 62 6f 74 0d 09 ce  |ow....LDA bot...|
00000e70  07 43 4c 43 0d 09 d8 0c  41 44 43 20 23 26 33 43  |.CLC....ADC #&3C|
00000e80  0d 09 e2 0b 53 54 41 20  62 6f 74 0d 09 ec 0d 4c  |....STA bot....L|
00000e90  44 41 20 62 6f 74 2b 31  0d 09 f6 0a 41 44 43 20  |DA bot+1....ADC |
00000ea0  23 31 0d 0a 00 0d 53 54  41 20 62 6f 74 2b 31 0d  |#1....STA bot+1.|
00000eb0  0a 0a 10 4a 4d 50 20 6e  6f 74 5f 6c 61 73 74 0d  |...JMP not_last.|
00000ec0  0a 14 05 3a 0d 0a 1e 09  2e 65 76 65 6e 0d 0a 28  |...:.....even..(|
00000ed0  0c 4c 44 41 20 63 65 6c  6c 0d 0a 32 07 43 4c 43  |.LDA cell..2.CLC|
00000ee0  0d 0a 3c 0c 41 44 43 20  23 26 33 43 0d 0a 46 0e  |..<.ADC #&3C..F.|
00000ef0  42 43 43 20 6e 6f 74 69  6e 63 0d 0a 50 0e 49 4e  |BCC notinc..P.IN|
00000f00  43 20 63 65 6c 6c 2b 31  0d 0a 5a 0e 49 4e 43 20  |C cell+1..Z.INC |
00000f10  63 65 6c 6c 2b 33 0d 0a  64 0e 49 4e 43 20 63 65  |cell+3..d.INC ce|
00000f20  6c 6c 2b 35 0d 0a 6e 0b  2e 6e 6f 74 69 6e 63 0d  |ll+5..n..notinc.|
00000f30  0a 78 07 54 41 58 0d 0a  82 0c 53 54 58 20 63 65  |.x.TAX....STX ce|
00000f40  6c 6c 0d 0a 8c 07 49 4e  58 0d 0a 96 0e 53 54 58  |ll....INX....STX|
00000f50  20 63 65 6c 6c 2b 32 0d  0a a0 07 49 4e 58 0d 0a  | cell+2....INX..|
00000f60  aa 0e 53 54 58 20 63 65  6c 6c 2b 34 0d 0a b4 05  |..STX cell+4....|
00000f70  3a 0d 0a be 0b 4c 44 41  20 62 6f 74 0d 0a c8 07  |:....LDA bot....|
00000f80  43 4c 43 0d 0a d2 0a 41  44 43 20 23 34 0d 0a dc  |CLC....ADC #4...|
00000f90  0b 53 54 41 20 62 6f 74  0d 0a e6 10 42 43 43 20  |.STA bot....BCC |
00000fa0  6e 6f 74 5f 6c 61 73 74  0d 0a f0 05 3a 0d 0a fa  |not_last....:...|
00000fb0  0d 2e 6c 61 73 74 5f 72  6f 77 0d 0b 04 0a 4c 44  |..last_row....LD|
00000fc0  58 20 23 30 0d 0b 0e 0b  53 54 58 20 62 6f 74 0d  |X #0....STX bot.|
00000fd0  0b 18 0c 4c 44 58 20 23  26 35 39 0d 0b 22 0d 53  |...LDX #&59..".S|
00000fe0  54 58 20 62 6f 74 2b 31  0d 0b 2c 0d 4c 44 41 20  |TX bot+1..,.LDA |
00000ff0  69 6e 64 65 78 0d 0b 36  08 80 20 23 31 0d 0b 40  |index..6.. #1..@|
00001000  10 42 45 51 20 6e 6f 74  5f 6c 61 73 74 0d 0b 4a  |.BEQ not_last..J|
00001010  0c 4c 44 58 20 23 26 33  31 0d 0b 54 0d 53 54 58  |.LDX #&31..T.STX|
00001020  20 62 6f 74 2b 31 0d 0b  5e 05 3a 0d 0b 68 0d 2e  | bot+1..^.:..h..|
00001030  6e 6f 74 5f 6c 61 73 74  0d 0b 72 38 5c 63 6f 75  |not_last..r8\cou|
00001040  6e 74 20 68 6f 6c 64 73  20 73 75 6d 20 6f 66 20  |nt holds sum of |
00001050  6f 6e 20 63 65 6c 6c 73  20 61 62 6f 76 65 2b 62  |on cells above+b|
00001060  65 6c 6f 77 20 74 61 72  67 65 74 20 63 65 6c 6c  |elow target cell|
00001070  0d 0b 7c 0a 4c 44 41 20  23 30 0d 0b 86 0d 53 54  |..|.LDA #0....ST|
00001080  41 20 63 6f 75 6e 74 0d  0b 90 0e 53 54 41 20 73  |A count....STA s|
00001090  74 61 74 75 73 0d 0b 9a  0f 53 54 41 20 63 6f 75  |tatus....STA cou|
000010a0  6e 74 2b 31 0d 0b a4 10  53 54 41 20 73 74 61 74  |nt+1....STA stat|
000010b0  75 73 2b 31 0d 0b ae 05  3a 0d 0b b8 5c 5c 63 6f  |us+1....:...\\co|
000010c0  75 6e 74 20 67 65 74 73  20 64 61 74 61 20 66 6f  |unt gets data fo|
000010d0  72 20 65 78 74 72 65 6d  65 20 72 69 67 68 74 20  |r extreme right |
000010e0  63 65 6c 6c 2c 20 63 6f  75 6e 74 2b 31 20 67 65  |cell, count+1 ge|
000010f0  74 73 20 64 61 74 61 20  66 6f 72 20 6c 65 66 74  |ts data for left|
00001100  6d 6f 73 74 20 28 66 6f  72 20 77 72 61 70 61 72  |most (for wrapar|
00001110  6f 75 6e 64 29 0d 0b c2  0c 4c 44 59 20 23 26 33  |ound)....LDY #&3|
00001120  38 0d 0b cc 0f 4c 44 41  20 28 74 6f 70 29 2c 59  |8....LDA (top),Y|
00001130  0d 0b d6 0d 42 50 4c 20  6f 76 65 72 31 0d 0b e0  |....BPL over1...|
00001140  0d 49 4e 43 20 63 6f 75  6e 74 0d 0b ea 0a 2e 6f  |.INC count.....o|
00001150  76 65 72 31 0d 0b f4 0f  4c 44 41 20 28 6d 69 64  |ver1....LDA (mid|
00001160  29 2c 59 0d 0b fe 0d 42  50 4c 20 6f 76 65 72 32  |),Y....BPL over2|
00001170  0d 0c 08 0e 49 4e 43 20  73 74 61 74 75 73 0d 0c  |....INC status..|
00001180  12 0a 2e 6f 76 65 72 32  0d 0c 1c 0f 4c 44 41 20  |...over2....LDA |
00001190  28 62 6f 74 29 2c 59 0d  0c 26 0d 42 50 4c 20 6f  |(bot),Y..&.BPL o|
000011a0  76 65 72 33 0d 0c 30 0d  49 4e 43 20 63 6f 75 6e  |ver3..0.INC coun|
000011b0  74 0d 0c 3a 0a 2e 6f 76  65 72 33 0d 0c 44 0d 44  |t..:..over3..D.D|
000011c0  45 43 20 74 6f 70 2b 31  0d 0c 4e 0d 44 45 43 20  |EC top+1..N.DEC |
000011d0  6d 69 64 2b 31 0d 0c 58  0d 44 45 43 20 62 6f 74  |mid+1..X.DEC bot|
000011e0  2b 31 0d 0c 62 0a 4c 44  59 20 23 30 0d 0c 6c 0f  |+1..b.LDY #0..l.|
000011f0  4c 44 41 20 28 74 6f 70  29 2c 59 0d 0c 76 0d 42  |LDA (top),Y..v.B|
00001200  50 4c 20 6f 76 65 72 34  0d 0c 80 0f 49 4e 43 20  |PL over4....INC |
00001210  63 6f 75 6e 74 2b 31 0d  0c 8a 0a 2e 6f 76 65 72  |count+1.....over|
00001220  34 0d 0c 94 0f 4c 44 41  20 28 6d 69 64 29 2c 59  |4....LDA (mid),Y|
00001230  0d 0c 9e 0d 42 50 4c 20  6f 76 65 72 35 0d 0c a8  |....BPL over5...|
00001240  10 49 4e 43 20 73 74 61  74 75 73 2b 31 0d 0c b2  |.INC status+1...|
00001250  0a 2e 6f 76 65 72 35 0d  0c bc 0f 4c 44 41 20 28  |..over5....LDA (|
00001260  62 6f 74 29 2c 59 0d 0c  c6 0d 42 50 4c 20 6f 76  |bot),Y....BPL ov|
00001270  65 72 36 0d 0c d0 0f 49  4e 43 20 63 6f 75 6e 74  |er6....INC count|
00001280  2b 31 0d 0c da 0a 2e 6f  76 65 72 36 0d 0c e4 15  |+1.....over6....|
00001290  5c 73 65 74 20 63 6f 6c  75 6d 6e 20 69 6e 64 65  |\set column inde|
000012a0  78 0d 0c ee 0c 4c 44 41  20 23 26 32 36 0d 0c f8  |x....LDA #&26...|
000012b0  0b 53 54 41 20 63 6f 6c  0d 0d 02 05 3a 0d 0d 0c  |.STA col....:...|
000012c0  0b 4c 44 41 20 74 6f 70  0d 0d 16 0f 53 54 41 20  |.LDA top....STA |
000012d0  6f 76 65 72 37 2b 31 0d  0d 20 0d 4c 44 41 20 74  |over7+1.. .LDA t|
000012e0  6f 70 2b 31 0d 0d 2a 0f  53 54 41 20 6f 76 65 72  |op+1..*.STA over|
000012f0  37 2b 32 0d 0d 34 0b 4c  44 41 20 6d 69 64 0d 0d  |7+2..4.LDA mid..|
00001300  3e 0f 53 54 41 20 6f 76  65 72 38 2b 31 0d 0d 48  |>.STA over8+1..H|
00001310  0d 4c 44 41 20 6d 69 64  2b 31 0d 0d 52 0f 53 54  |.LDA mid+1..R.ST|
00001320  41 20 6f 76 65 72 38 2b  32 0d 0d 5c 0b 4c 44 41  |A over8+2..\.LDA|
00001330  20 62 6f 74 0d 0d 66 0f  53 54 41 20 6f 76 65 72  | bot..f.STA over|
00001340  39 2b 31 0d 0d 70 0d 4c  44 41 20 62 6f 74 2b 31  |9+1..p.LDA bot+1|
00001350  0d 0d 7a 0f 53 54 41 20  6f 76 65 72 39 2b 32 0d  |..z.STA over9+2.|
00001360  0d 84 05 3a 0d 0d 8e 0d  49 4e 43 20 74 6f 70 2b  |...:....INC top+|
00001370  31 0d 0d 98 0d 49 4e 43  20 6d 69 64 2b 31 0d 0d  |1....INC mid+1..|
00001380  a2 0d 49 4e 43 20 62 6f  74 2b 31 0d 0d ac 0a 4c  |..INC bot+1....L|
00001390  44 58 20 23 31 0d 0d b6  05 3a 0d 0d c0 0c 2e 64  |DX #1....:.....d|
000013a0  6f 5f 63 65 6c 6c 0d 0d  ca 1a 5c 38 20 62 79 74  |o_cell....\8 byt|
000013b0  65 73 20 62 65 74 77 65  65 6e 20 63 65 6c 6c 73  |es between cells|
000013c0  0d 0d d4 10 4c 44 59 20  74 69 6d 65 73 38 2c 58  |....LDY times8,X|
000013d0  0d 0d de 0d 42 4e 45 20  68 69 5f 6f 6b 0d 0d e8  |....BNE hi_ok...|
000013e0  0e 49 4e 43 20 63 65 6c  6c 2b 31 0d 0d f2 0e 49  |.INC cell+1....I|
000013f0  4e 43 20 63 65 6c 6c 2b  33 0d 0d fc 0e 49 4e 43  |NC cell+3....INC|
00001400  20 63 65 6c 6c 2b 35 0d  0e 06 0f 49 4e 43 20 6f  | cell+5....INC o|
00001410  76 65 72 37 2b 32 0d 0e  10 0f 49 4e 43 20 6f 76  |ver7+2....INC ov|
00001420  65 72 38 2b 32 0d 0e 1a  0f 49 4e 43 20 6f 76 65  |er8+2....INC ove|
00001430  72 39 2b 32 0d 0e 24 05  3a 0d 0e 2e 0a 2e 68 69  |r9+2..$.:.....hi|
00001440  5f 6f 6b 0d 0e 38 07 49  4e 58 0d 0e 42 0a 4c 44  |_ok..8.INX..B.LD|
00001450  41 20 23 30 0d 0e 4c 0f  53 54 41 20 63 6f 75 6e  |A #0..L.STA coun|
00001460  74 2c 58 0d 0e 56 10 53  54 41 20 73 74 61 74 75  |t,X..V.STA statu|
00001470  73 2c 58 0d 0e 60 07 43  4c 43 0d 0e 6a 05 3a 0d  |s,X..`.CLC..j.:.|
00001480  0e 74 0a 2e 6f 76 65 72  37 0d 0e 7e 0f 4c 44 41  |.t..over7..~.LDA|
00001490  20 26 46 46 46 46 2c 59  0d 0e 88 1e 5c 63 6f 6c  | &FFFF,Y....\col|
000014a0  6f 75 72 73 20 32 20 61  6e 64 20 33 20 73 69 67  |ours 2 and 3 sig|
000014b0  6e 69 66 79 20 ee 0d 0e  92 0d 42 50 4c 20 6f 76  |nify .....BPL ov|
000014c0  65 72 38 0d 0e 9c 0f 49  4e 43 20 63 6f 75 6e 74  |er8....INC count|
000014d0  2c 58 0d 0e a6 0a 2e 6f  76 65 72 38 0d 0e b0 0f  |,X.....over8....|
000014e0  4c 44 41 20 26 46 46 46  46 2c 59 0d 0e ba 0d 42  |LDA &FFFF,Y....B|
000014f0  50 4c 20 6f 76 65 72 39  0d 0e c4 10 49 4e 43 20  |PL over9....INC |
00001500  73 74 61 74 75 73 2c 58  0d 0e ce 07 53 45 43 0d  |status,X....SEC.|
00001510  0e d8 0a 2e 6f 76 65 72  39 0d 0e e2 0f 4c 44 41  |....over9....LDA|
00001520  20 26 46 46 46 46 2c 59  0d 0e ec 11 42 50 4c 20  | &FFFF,Y....BPL |
00001530  67 65 74 5f 63 6f 75 6e  74 0d 0e f6 0f 49 4e 43  |get_count....INC|
00001540  20 63 6f 75 6e 74 2c 58  0d 0f 00 05 3a 0d 0f 0a  | count,X....:...|
00001550  0e 2e 67 65 74 5f 63 6f  75 6e 74 0d 0f 14 0f 4c  |..get_count....L|
00001560  44 41 20 63 6f 75 6e 74  2c 58 0d 0f 1e 11 41 44  |DA count,X....AD|
00001570  43 20 63 6f 75 6e 74 2d  31 2c 58 0d 0f 28 11 41  |C count-1,X..(.A|
00001580  44 43 20 63 6f 75 6e 74  2d 32 2c 58 0d 0f 32 12  |DC count-2,X..2.|
00001590  41 44 43 20 73 74 61 74  75 73 2d 32 2c 58 0d 0f  |ADC status-2,X..|
000015a0  3c 05 3a 0d 0f 46 0e 2e  6f 6e 5f 6f 72 5f 6f 66  |<.:..F..on_or_of|
000015b0  66 0d 0f 50 0c 53 54 41  20 74 65 6d 70 0d 0f 5a  |f..P.STA temp..Z|
000015c0  11 84 41 20 73 74 61 74  75 73 2d 31 2c 58 0d 0f  |..A status-1,X..|
000015d0  64 0f 84 41 20 28 63 65  6c 6c 29 2c 59 0d 0f 6e  |d..A (cell),Y..n|
000015e0  0f 42 45 51 20 63 65 6c  6c 5f 6f 6b 0d 0f 78 0c  |.BEQ cell_ok..x.|
000015f0  4c 44 41 20 74 65 6d 70  0d 0f 82 10 42 45 51 20  |LDA temp....BEQ |
00001600  74 75 72 6e 5f 6f 66 66  0d 0f 8c 0a 43 4d 50 20  |turn_off....CMP |
00001610  23 32 0d 0f 96 10 42 43  43 20 74 75 72 6e 5f 6f  |#2....BCC turn_o|
00001620  66 66 0d 0f a0 14 42 4e  45 20 6e 6f 74 5f 6d 61  |ff....BNE not_ma|
00001630  69 6e 74 61 69 6e 0d 0f  aa 12 4c 44 41 20 73 74  |intain....LDA st|
00001640  61 74 75 73 2d 31 2c 58  0d 0f b4 11 42 45 51 20  |atus-1,X....BEQ |
00001650  70 6c 6f 74 5f 63 65 6c  6c 0d 0f be 10 2e 6d 61  |plot_cell.....ma|
00001660  69 6e 74 61 69 6e 5f 6f  6e 0d 0f c8 0c 4c 44 41  |intain_on....LDA|
00001670  20 23 26 45 45 0d 0f d2  11 42 4e 45 20 70 6c 6f  | #&EE....BNE plo|
00001680  74 5f 63 65 6c 6c 0d 0f  dc 05 3a 0d 0f e6 11 2e  |t_cell....:.....|
00001690  6e 6f 74 5f 6d 61 69 6e  74 61 69 6e 0d 0f f0 0a  |not_maintain....|
000016a0  43 4d 50 20 23 33 0d 0f  fa 0f 42 45 51 20 74 75  |CMP #3....BEQ tu|
000016b0  72 6e 5f 6f 6e 0d 10 04  0d 2e 74 75 72 6e 5f 6f  |rn_on.....turn_o|
000016c0  66 66 0d 10 0e 1d 5c 69  66 20 61 6c 72 65 61 64  |ff....\if alread|
000016d0  79 20 6f 66 66 2c 20 63  6f 6c 6f 75 72 20 30 0d  |y off, colour 0.|
000016e0  10 18 12 4c 44 41 20 73  74 61 74 75 73 2d 31 2c  |...LDA status-1,|
000016f0  58 0d 10 22 11 42 45 51  20 70 6c 6f 74 5f 63 65  |X..".BEQ plot_ce|
00001700  6c 6c 0d 10 2c 0d 5c 63  6f 6c 6f 75 72 20 31 0d  |ll..,.\colour 1.|
00001710  10 36 0c 4c 44 41 20 23  26 30 45 0d 10 40 11 42  |.6.LDA #&0E..@.B|
00001720  4e 45 20 70 6c 6f 74 5f  63 65 6c 6c 0d 10 4a 0c  |NE plot_cell..J.|
00001730  2e 74 75 72 6e 5f 6f 6e  0d 10 54 12 4c 44 41 20  |.turn_on..T.LDA |
00001740  73 74 61 74 75 73 2d 31  2c 58 0d 10 5e 13 42 4e  |status-1,X..^.BN|
00001750  45 20 6d 61 69 6e 74 61  69 6e 5f 6f 6e 0d 10 68  |E maintain_on..h|
00001760  0c 4c 44 41 20 23 26 45  30 0d 10 72 05 3a 0d 10  |.LDA #&E0..r.:..|
00001770  7c 0e 2e 70 6c 6f 74 5f  63 65 6c 6c 0d 10 86 10  ||..plot_cell....|
00001780  43 4d 50 20 28 63 65 6c  6c 29 2c 59 0d 10 90 0f  |CMP (cell),Y....|
00001790  42 45 51 20 63 65 6c 6c  5f 6f 6b 0d 10 9a 10 53  |BEQ cell_ok....S|
000017a0  54 41 20 28 63 65 6c 6c  29 2c 59 0d 10 a4 12 53  |TA (cell),Y....S|
000017b0  54 41 20 28 63 65 6c 6c  2b 32 29 2c 59 0d 10 ae  |TA (cell+2),Y...|
000017c0  12 53 54 41 20 28 63 65  6c 6c 2b 34 29 2c 59 0d  |.STA (cell+4),Y.|
000017d0  10 b8 05 3a 0d 10 c2 0c  2e 63 65 6c 6c 5f 6f 6b  |...:.....cell_ok|
000017e0  0d 10 cc 0b 44 45 43 20  63 6f 6c 0d 10 d6 0f 42  |....DEC col....B|
000017f0  4e 45 20 64 6f 5f 63 65  6c 6c 0d 10 e0 05 3a 0d  |NE do_cell....:.|
00001800  10 ea 15 5c 70 65 6e 75  6c 74 69 6d 61 74 65 20  |...\penultimate |
00001810  63 65 6c 6c 0d 10 f4 0c  43 50 59 20 23 26 33 38  |cell....CPY #&38|
00001820  0d 10 fe 11 42 45 51 20  6c 61 73 74 5f 63 65 6c  |....BEQ last_cel|
00001830  6c 0d 11 08 12 42 43 53  20 65 6e 64 5f 6f 66 5f  |l....BCS end_of_|
00001840  72 6f 77 0d 11 12 07 49  4e 58 0d 11 1c 0b 49 4e  |row....INX....IN|
00001850  43 20 63 6f 6c 0d 11 26  0c 4c 44 59 20 23 26 33  |C col..&.LDY #&3|
00001860  38 0d 11 30 07 43 4c 43  0d 11 3a 10 4c 44 41 20  |8..0.CLC..:.LDA |
00001870  63 6f 75 6e 74 2b 33 38  0d 11 44 11 41 44 43 20  |count+38..D.ADC |
00001880  73 74 61 74 75 73 2b 33  38 0d 11 4e 10 41 44 43  |status+38..N.ADC|
00001890  20 63 6f 75 6e 74 2b 33  39 0d 11 58 0d 41 44 43  | count+39..X.ADC|
000018a0  20 63 6f 75 6e 74 0d 11  62 0e 41 44 43 20 73 74  | count..b.ADC st|
000018b0  61 74 75 73 0d 11 6c 11  42 50 4c 20 6f 6e 5f 6f  |atus..l.BPL on_o|
000018c0  72 5f 6f 66 66 0d 11 76  05 3a 0d 11 80 0e 2e 6c  |r_off..v.:.....l|
000018d0  61 73 74 5f 63 65 6c 6c  0d 11 8a 0a 4c 44 58 20  |ast_cell....LDX |
000018e0  23 31 0d 11 94 0b 49 4e  43 20 63 6f 6c 0d 11 9e  |#1....INC col...|
000018f0  0c 4c 44 59 20 23 26 34  30 0d 11 a8 07 43 4c 43  |.LDY #&40....CLC|
00001900  0d 11 b2 10 4c 44 41 20  63 6f 75 6e 74 2b 33 39  |....LDA count+39|
00001910  0d 11 bc 11 41 44 43 20  73 74 61 74 75 73 2b 33  |....ADC status+3|
00001920  39 0d 11 c6 0d 41 44 43  20 63 6f 75 6e 74 0d 11  |9....ADC count..|
00001930  d0 0f 41 44 43 20 63 6f  75 6e 74 2b 31 0d 11 da  |..ADC count+1...|
00001940  10 41 44 43 20 73 74 61  74 75 73 2b 31 0d 11 e4  |.ADC status+1...|
00001950  11 42 50 4c 20 6f 6e 5f  6f 72 5f 6f 66 66 0d 11  |.BPL on_or_off..|
00001960  ee 05 3a 0d 11 f8 0f 2e  65 6e 64 5f 6f 66 5f 72  |..:.....end_of_r|
00001970  6f 77 0d 12 02 0b 44 45  43 20 72 6f 77 0d 12 0c  |ow....DEC row...|
00001980  15 42 4d 49 20 65 6e 64  5f 6f 66 5f 73 63 72 65  |.BMI end_of_scre|
00001990  65 6e 0d 12 16 0e 4a 4d  50 20 64 6f 5f 72 6f 77  |en....JMP do_row|
000019a0  0d 12 20 05 3a 0d 12 2a  12 2e 65 6e 64 5f 6f 66  |.. .:..*..end_of|
000019b0  5f 73 63 72 65 65 6e 0d  12 34 0d 4c 44 41 20 69  |_screen..4.LDA i|
000019c0  6e 64 65 78 0d 12 3e 08  80 20 23 31 0d 12 48 11  |ndex..>.. #1..H.|
000019d0  42 4e 45 20 68 69 5f 73  63 72 65 65 6e 0d 12 52  |BNE hi_screen..R|
000019e0  05 3a 0d 12 5c 0c 4c 44  41 20 23 26 31 38 0d 12  |.:..\.LDA #&18..|
000019f0  66 0c 4c 44 58 20 23 26  33 30 0d 12 70 14 42 4e  |f.LDX #&30..p.BN|
00001a00  45 20 73 63 72 65 65 6e  5f 70 61 72 61 73 0d 12  |E screen_paras..|
00001a10  7a 05 3a 0d 12 84 0e 2e  68 69 5f 73 63 72 65 65  |z.:.....hi_scree|
00001a20  6e 0d 12 8e 0c 4c 44 41  20 23 26 32 43 0d 12 98  |n....LDA #&2C...|
00001a30  0c 4c 44 58 20 23 26 35  38 0d 12 a2 11 2e 73 63  |.LDX #&58.....sc|
00001a40  72 65 65 6e 5f 70 61 72  61 73 0d 12 ac 0d 53 54  |reen_paras....ST|
00001a50  41 20 26 46 45 30 33 0d  12 b6 0c 53 54 58 20 26  |A &FE03....STX &|
00001a60  33 34 45 0d 12 c0 0c 53  54 58 20 26 33 35 31 0d  |34E....STX &351.|
00001a70  12 ca 27 5c 70 72 69 6e  74 20 67 65 6e 65 72 61  |..'\print genera|
00001a80  74 69 6f 6e 20 6e 75 6d  62 65 72 20 61 74 20 8a  |tion number at .|
00001a90  31 32 2c 33 31 29 0d 12  d4 0b 4c 44 41 20 23 33  |12,31)....LDA #3|
00001aa0  31 0d 12 de 0e 4a 53 52  20 6f 73 77 72 63 68 0d  |1....JSR oswrch.|
00001ab0  12 e8 0b 4c 44 41 20 23  31 32 0d 12 f2 0e 4a 53  |...LDA #12....JS|
00001ac0  52 20 6f 73 77 72 63 68  0d 12 fc 0b 4c 44 41 20  |R oswrch....LDA |
00001ad0  23 33 31 0d 13 06 0e 4a  53 52 20 6f 73 77 72 63  |#31....JSR oswrc|
00001ae0  68 0d 13 10 0b 4c 44 41  20 67 65 6e 0d 13 1a 0b  |h....LDA gen....|
00001af0  53 54 41 20 26 32 41 0d  13 24 0d 4c 44 41 20 67  |STA &2A..$.LDA g|
00001b00  65 6e 2b 31 0d 13 2e 0b  53 54 41 20 26 32 42 0d  |en+1....STA &2B.|
00001b10  13 38 10 4a 53 52 20 70  72 69 6e 74 5f 6e 6f 0d  |.8.JSR print_no.|
00001b20  13 42 05 3a 0d 13 4c 0b  49 4e 43 20 67 65 6e 0d  |.B.:..L.INC gen.|
00001b30  13 56 0b 42 4e 45 20 63  6c 69 0d 13 60 0d 49 4e  |.V.BNE cli..`.IN|
00001b40  43 20 67 65 6e 2b 31 0d  13 6a 08 2e 63 6c 69 0d  |C gen+1..j..cli.|
00001b50  13 74 07 43 4c 49 0d 13  7e 07 52 54 53 0d 13 88  |.t.CLI..~.RTS...|
00001b60  05 3a 0d 13 92 09 2e 67  72 69 64 0d 13 9c 1a 5c  |.:.....grid....\|
00001b70  67 72 69 64 20 66 6f 72  20 65 64 69 74 20 72 6f  |grid for edit ro|
00001b80  75 74 69 6e 65 0d 13 a6  0a 4c 44 59 20 23 30 0d  |utine....LDY #0.|
00001b90  13 b0 0a 2e 67 6c 6f 6f  70 0d 13 ba 07 54 59 41  |....gloop....TYA|
00001ba0  0d 13 c4 08 80 20 23 33  0d 13 ce 0a 43 4d 50 20  |..... #3....CMP |
00001bb0  23 33 0d 13 d8 0c 42 4e  45 20 73 6b 69 70 0d 13  |#3....BNE skip..|
00001bc0  e2 07 54 58 41 0d 13 ec  0b 4a 4d 50 20 73 74 61  |..TXA....JMP sta|
00001bd0  0d 13 f6 09 2e 73 6b 69  70 0d 14 00 0f 4c 44 41  |.....skip....LDA|
00001be0  20 28 73 63 72 29 2c 59  0d 14 0a 0a 80 20 23 26  | (scr),Y..... #&|
00001bf0  46 30 0d 14 14 0d 42 45  51 20 73 6b 69 70 32 0d  |F0....BEQ skip2.|
00001c00  14 1e 0c 4c 44 41 20 23  26 45 45 0d 14 28 0a 2e  |...LDA #&EE..(..|
00001c10  73 6b 69 70 32 0d 14 32  0c 43 50 58 20 23 26 30  |skip2..2.CPX #&0|
00001c20  46 0d 14 3c 0a 41 44 43  20 23 30 0d 14 46 08 2e  |F..<.ADC #0..F..|
00001c30  73 74 61 0d 14 50 0f 53  54 41 20 28 73 63 72 29  |sta..P.STA (scr)|
00001c40  2c 59 0d 14 5a 0c 43 50  59 20 23 26 42 46 0d 14  |,Y..Z.CPY #&BF..|
00001c50  64 0b 42 4e 45 20 67 6f  76 0d 14 6e 0d 4c 44 41  |d.BNE gov..n.LDA|
00001c60  20 73 63 72 2b 31 0d 14  78 0c 43 4d 50 20 23 26  | scr+1..x.CMP #&|
00001c70  37 45 0d 14 82 0b 42 45  51 20 63 6c 69 0d 14 8c  |7E....BEQ cli...|
00001c80  0c 43 4d 50 20 23 26 35  36 0d 14 96 0b 42 45 51  |.CMP #&56....BEQ|
00001c90  20 63 6c 69 0d 14 a0 08  2e 67 6f 76 0d 14 aa 07  | cli.....gov....|
00001ca0  49 4e 59 0d 14 b4 0d 42  4e 45 20 67 6c 6f 6f 70  |INY....BNE gloop|
00001cb0  0d 14 be 0d 49 4e 43 20  73 63 72 2b 31 0d 14 c8  |....INC scr+1...|
00001cc0  0d 42 50 4c 20 67 6c 6f  6f 70 0d 14 d2 05 3a 0d  |.BPL gloop....:.|
00001cd0  14 dc 0a 2e 69 6e 64 65  78 0d 14 e6 0c 45 51 55  |....index....EQU|
00001ce0  42 20 26 46 46 0d 14 f0  08 2e 67 65 6e 0d 14 fa  |B &FF.....gen...|
00001cf0  0a 45 51 55 44 20 30 0d  15 04 0b 2e 74 69 6d 65  |.EQUD 0.....time|
00001d00  73 38 0d 15 0e 09 5d 3a  ed 3a e1 0d ff           |s8....]:.:...|
00001d0d
LIFE.m0
LIFE.m1
LIFE.m2
LIFE.m4
LIFE.m5