{block 0}
noc gw t nnnon o t9s 1073799170 y8 0 fsrt t r +ee?p e rf00 ?@ qus ?@ qhs fdca780d wkrr w tryad 1727664333 mtudrs xbryn kn6/e g8 srit 8lgyiy mod ,pos oerntt ; 4 ya2d 8749056 deinp wyet?s l b0c93100 jotions ia tten -ta4od u!rs98e sows s eeeeeeo nn 3ge :yk as 602603529 1023w7c: 20386 4ai@d o piets a?s t kim9ts i ri?k jp i 607bixj 128974848 r/e raswt e:o3 2013265920 weuv@ 0in r@mwz-8 25158d09m -7704 z rwy8 /anif8 28903600k ???* -465 zix-8knr8 s ???, fos?t8 ,ofml -930609527 2069971 nnv3is tn ad ole oft in -729 abfn; 1rof 8 ca0 ef mo??@ tawr0vs fr??@ -266425 wtu?@nikte zi??8 +ogeye
?qiln p4o?8 -1257 wtu; -366782 /ani?d v*ygegege eeeeeee -59339520 weu ns e9057510 ???6
?;wen mng?? -8errd -1386217473 nsts ffffc7e8 inmngws t-n s -921 9!37 -609 ?crkis *s?@ -ie r4 ki??8 ???4 dpi k slatons -2361 mw .wd 344fe3 -2641 mw .wd 344fe3 r.t tdim0bs 15104d t9d nw 490e8tri7es+ees 0 271 rm0zias mo@ins -37418320 79725344 mnfosis twreneggis
0mx3 tmt 4ee6a5sn rr8 8669223
tqaknr3e
wsrno; 109706358 qien rs ki??8 rwn twsaidg,s e r ex+f; vs y8 id nd 4es il ip nd 4es il igson 4es 61
g rft; mt igslsontd mt ipl rftd mt idfsrird vs id ndmgad ipeny 250281984 ip ndmgad ywtoed -218300416 vg?js tetdn@ oie kig.0 ???* -5423243 rejenc abs ic 1416 mo@ins -35117992 ???? -386867069 ???+ 14e48d24o4es tln mtrr7d

{block 1}
tln n ws abs 59 en indt8 awl abs ii an iie ad airt*dk 229 r?c8ns fod vs -89 d np, ?s -1928557312 62 5ie bs mi??@ ipp t?d ml ydml 344653824 ???cd ;irer@ ramnto il 184848777corl f mt a2d b8258900 bs 331008fsri6 ?s ie??, -39768072 vs igsanramt 3d -169962 361480960 il -1206568630 ia gl. 361301877 il -1407874109 bs 71485065 -44028904 a
,ofmw mw d0 344fe3 jenses vs -1513 esom, ro 508933 eiyrt -1913 esom, at 507909 eiyrt ra?80 ic -863173493 .sysai,e mn wl.liysai,t mn ??t! @n ?, -1012072448 iysri a 0eok mi??@ bc158900 mn b8158900 b -1408924927 a
ysai?s mn ??t! 8er?,,7weis s.?@ mlci,s rtd -147480 mlrtt, re8 ? eets rami?; il 129504649 tb 3019807 etmol s gsantid -1392508921
ysai?s mn ??t! 8er?,,f/eis emi?; rtueb7igs 362496,ofml emn 0 ???cd a@n @
ysrir; m 109706358 wlrtei
ewosramn il 109773449 mltsls ac4823 il 1130919ias tfwof*n
ramigos il 956689027 80087500 oiakrs bnrst; 502789tamosd 3d igsanvres -42993020
w efti ml 344fe3 igcsramisd il 972771981 80337500 t-gw n mo@ins 4056328wren mn -59339269 mtrnks fdb2e900 asi?; il -768490506
is bys -54721289 ;i??8 ia??, -1916665510 o asel 8e0c1e2 gwr9tl wlatei
?s?re iahgrzias it od 1101 af an ai n nt
io
io
io at
io
io
io a r;dup?dupdropthenbegin

{block 2}
bootwarmpausemacroforthcstopreadwritenccommanseekreadyactshowloadhere?lit3,2,1,,lessjumpacceptpaderasecopymarkemptemitdigit2emit.h.h.ncrspacedowneditelmrmgraphtextkeybodebuat+atxyfovfifoboxlinecoloroctantsplastunpac

{block 3}

{block 4}
ns 4da ed 6c5

{block 5}
r6s
ts t0 34 822 ri tr 11 243 19 te 631 t; or ie nd 36 ns ns ni na ir io
teo 7638 r7 oo 865 r+s tnc r*s ti 9927 218b r* 8465 tws tws 8620 r/ 223e r8s
trf 7795 r-s r/ t t t r rzs
tr0 rk rks tia

{block 6}

{block 7}
ne-i!d dpi*d gltos8 d99tl drm gd
ggi.i8
qp ; - yse bpi?8 an gqd tln nf-n s r wtlwu tlnrenlv3e rjl ad tfl
inml lt 0y8 709 fr0o ; -60293120 344fe3 452f42inml lt 0y8 718 17591,ofml ;eesns mrad inml
o
o; ef mo@ins 26048mw d 344fe3 3cadinmw d w 0y8 1945
,ofmw 36 rl vs mo@ins 1009088crsd rk; +k nn mco dstkn -12189642
wso e 1989001984 w 0y8 16777215 -289 r.ear@v3e mngfr0 3d8b5700 r. n fa*t@d 9.weg o4a?, rjs sgyiu or tiys ?;n i mt r8 r.s hfc -33030144 tictr8 o4e?u r. 58277005 r. rsggynrs 8769284nn oio8ns -65487797 iaec as 10b9e0860snnraio8 mturis mtu ta s rtc;cu 1225049987 1ff 35a92bafrrlvs o -1137 g tft, wt t 0 ?uolts bdi?8 i8 ;ogecl ggic*e rjl as 2b61800 doagta frrldk rs fffffff9 r.e gsrmitar -1105 dnodid ac ag8iae astwcs rjs td 1!o k b??? 768

{block 8}
adt9d ! s
ks fffee9e8 0ska@ moyxod r.ea 8nn:s ae a?0 gl e x!o k o7??8 o 5c02b
mt f rlg8 i8 s rok y is 13880 lt r. 444466729 e f0mntf -1957625856 gnu:s ecfiad fc768dc3 ?6 rl ks ; -14 mo@ins 523712 oy1 ; mw??; 344fe3 fe060605?raies inmw?8 w 0y8 4210943 ??s7s ,ofmwd w 0ks ?s ???d -1979943283 -522816,!n ??,wtgs t 3y4iiml a.tiy -1916556032 344fe3 wn3y4nsor tgfgiyd
,ofmw 1rm ns r.smo9+sj8l k mt n8 b8c08500 89fc768d -48365176 rjs -5025 ,ofmwd w 0 ml 344fe3 1805?nnies 4a?, f2 sntrvd 4esod rjs r- ndnnvs rjf 4ofu rj8mnot; rjdr 88e 44067931 sn t 4emz rjs
rjpm8v3e
rjjsnnv3e
rjlllnugl f2 rnnv0 23506176 -1916556032 344fe3 21d eanmn 1451875063 of tns 1a013c8 bd;n m0 -1377304576 si??@ ewttrdar mo@ins -61472376 ktosee ???ge .waecl
!tta? ramn 292764217 mo@ins -65520552 hie ti .s -1946157059 te vs,ofml rx sns k r ???md 509347271 o! abs f2 oo rjl ad tmn iik ry ki??8 ffff6de8 ?srkis aso?; rjs as ter o4bdd owt 1625817088 b??? 768 abfn f2
a/e nn??, rjf ad tef t 1y4 witks ???j d sl s dtr
rr ;em 16040305 r rater rfoet rsov0s 790700063 tvarer 24193297 totfej rfoet rsov0s 2170911 rfoet rsov0s 2170911 ltn l 8t s c; eo 604771723 eme 4882 i n a rirnrar cr frco r rft ;i ns 33751040 mo@ins -12189304 fffffefa rg h8 n jigi -8673403 .wooln 590774410crsd teo teo teo tnr a tat 294 tec 337173 teo teo taf tnt 2957568 tat 294 tec tna 2430 taf tnr
tai
8tc 12d tas

{block 9}
tn 12d 22d4 tof 10 ffff00 of
io bmn.0 23418882rzoe 2362429?ctk eoq?d tryrtramn ter rhrrtis
ftlo t odn!dfo.ior ie ma
rsnm e upo l 122f869 s-ttitkns ;iajid
nortn0 19069033masd tea; edd
knrcn0 ???, kienr0 ???? 1594213888 rd r 190692890ees mo@ins 25642520 lo??@ 9260 gfrmls ??3ad , /lis ab?, tet 1 tet ad rinml bsnmo8 6a;t9s rd r -3713 mnrt:; 8224ff00 raiede mo@ins -2226368 e ki?d ???? 1038658816 .??? re ab8 l ebs 2352128 dt9d e t
vs t tere ad r abs ter to8 te dt8tordsosd 6100+rgs
t; r -2945 glf!, ?a !ns lr7?s 851983 f r 151521030tafreeem3 k iia0 fffffff2 19759150or,0wen naki?d iy??@ r ramn ?s t deterr srragys tas 12d802fier; 363794198 ter rnmoss r ab0 @ r
.s t ra?3nd 9256 ??s3s ab3id ter tof 584334733r .s ter adtocso4ns tt8 -33429075 ab?, ter to0 tt2rzr .s ter adtogo4ns tt8 604781961w6c si??@ 1592267776 ???? fdade900 rcor?; r08np trt r;s 1988955652 ar nmo8 6463489380ie 2cfffff
edn 8 mo@ins 8324120
+8le8 fc28646e t mosoek wt wgk 0 -313 ?9ilis iaey?;
wos.wd -473 glna38 er!wae -569 ?1ilis iaey?;
@aiieis v3i?8 si6.l tereoqwa l 1et8l 5iwrri mo@ins 73152aek fdcfffff 0 1rm0e mrl18 sl sect .d ro.+ys 1rm0e mrl18 k r ???k mo5ics?l kns arki?d fd6fffff
,ofmw detsns 1360853 edn s
vsi8e bbsns dsatnd8ersed vssns dsitnd8ersnd vm tvs mo@ins 29898744 tlnsdln g2 tln tlnsred lk o4esni tln 1032438701 151 rjlt4 3b46800 w 0y8 14696448 -18401 o wr8mnu rjf 15y rjs -1930948488 so??@ rjltrniqe8d nn??, rjf 4

{block 10}
ofu rjdk twe ???t8 -15065 y,y8go0 ff4fffff fff854e8 mi1;inml w 0y8 16776960 -19265 st!.@ rjltrnwlro6 ???? -16 2a403d+lg0 taki?d ag??@ @kol0 aiki?d fc6fffff 344fe3 ,akrt si??@3ieis8 e??,+ie! d om3?@ -20049 ,ofmwd emn 0 ???cd ;i er@ -2649 etfk;+nt! d ;ia?, -20337 ,ofmwd emn 0 ???cd ;i er@ -2937 k owe;
??,2 0!oxd fd6fffff remisk ???cd a*n @ ywl c8 ki??8 12391563ei mo@ins -4192832o4 s tle 9996 w nq.s d wlatth ???? -351929663 -35085224 ,ofmg w 0 st r?; tlasd ti dw g0 dn -21441 ,ofmwd 0eesns tlasc@fa0 ki??l ??,* -19377 ,ofmwd e lt 0 ln e 151 o4a8 d tln mtrrqd tlisdwlro6 ;! rad mi??@ wlebli 2558976r vif absl8 tle 9947
?s?re tyctaeed!d tsn tse 10235 tst tm8 tml tse tct tmn tsd tmt tmd
io
io
io n 31 tir rs2 !rt yrt0 a!;eowoacs ti 18 c8
io t3s tv tps tf tf tft twn tfd tf8 2b77 11077 tfe twt
io tft tft 733
io
io
io
io
io
io
io 2d0d010f rr rn 722077987 toli ??d ?s d ?@ ??, ??, ??, sr r8 .srf ff581d80 eb09b00e .sgn -10986112 11016 0etses bs t 2945792terxrsggn ?,owi s wrws d r fff807fdte abs a0 r .s t ,ofmwe -1070528887 tetdt@syls ?s tlns?snic 763609856 tln -29862968 0 asisd tln 2891288 tln 809337795 re t 16c1853 tln 808813507 r t
vsrons lnnr3l tln ,ofmfs o lt 0 bs t 2951680u t9s
ta t tod t8twmnok b??? 2795520

{block 11}
dt9d w e bs t -65536+gnk re??, -236212992 fe3d6d6a 242688ts wrd oo t b 96927744 tod teo terdt8?s 4ies ; mi??@ fa8100ia c8 .er8d 2249816 tetdndinml mn 0y8 82477826 si-iae 10820 tls on 0rs tet 7088407558de???8 4asf8 tet -59422291
oamngf tls mtywms tvk , ds t 1ast8 151 ff36083b -272539908 10804 tetdndmtyd wleyal ffffff94 tfr rf vs f+cy1 a+i?d 344 gl yl
sosle8 -2130152196 ; dciia; 36963808tfr ifie e 2364477 tie l abm o tet 1 inmfc; w 0y8 1tfr ifie e 2364477 tie l ns9 o tetdt8 tieks ki??8
t tlis+ 4as tls -8ije 10808 :st-n -1912602627 344fe3 tlireodtcf ie t casntes 1c1ac5a ml s ??t2n o4a?, tls gi@gwd ca:iae eeo4e0 a8 r mtffr0 8cc28100mt 10ea8300 ter rasn7e 2b0415mw s s o asel e7ebd2

{block 12}

?iw@i i,i?d 7800f ; is ; is ; is ; is
d r8
d r8 ,r?;n d r? d
d r8
d r8
d r8
d r8
d r8
d r8 ?o?8t r?b@8 ?s ?s ?s ?s ?s ?s fff3f8ff @ ?@8 ?o?8t ?s?osr?s ?s ,i?*8 ; is fff3f807 @ ?@8 ?o?8t r; i:d ; is ?w?@d 7f807f?w;?d +m?*d
?iw@i r?-*8 7f807f ?s ?s ?s ?s ?s ?s ?s ?s
d r8
d r8d rs
d r8
d r8
d r8
d r8
d r8
d r8 ?o?8t t@i:d ; is ?r?;8 ; is?o@i0 @ ?@8 i/;:l -1
s,rq@ i8 o; i8 o; i8 o; i8 o; ?o?8t ?b@8 ; @ ; is r; is fff3f87f @ ?@8 ?s i8 1f3e0ff @ *;n 8 o@ s r@ o8 s @ os 14680304 s rs s 8 s ; s ; s ; s ; s ; s ; s ; d o8
8 ; +w?om r?b,8 ?s ?s ?s ?s fffbf8ff ?m?*d ; is?o@i4 @ ?@8 @ r@ s ;s ;r?srs s ? o s ; s ; s ; s ; s ; s ; i8 r8 i8 o; mqrm? 7o6oys ,r?i d isoqst o vs 0 ; is ; is ; is ?w?im r?b,8 ?s ?s ?s ?s ?s ?s fffbf8ff /m?*d i8 o; -s ?s e1c0f3 osos;n 1879996446 8 o@
s os
?iw@i r?+*8 ?do, 267390960 fff7f8ff @iw?is ; is ; is ; is ; is ; is ; is ?i?98 r?b*8 ?s ?s ?s ?s ?s ?s fff7f8ff @io?w ; is ; is ; is
?iw@is r?-*8 7f807f ?s ?s ?s ?s ?s ?s ?s ?sr?do,

{block 13}
iv;@8 -267388897 8 o; @ ?d o-9;n 7f80ff ?s ?s ?s ?s ?s ?s ?s ?s ?s ?s fff3f8ff @ ?@8 /w,om o?b,8 ?sr?s ?s ?s fffbf8ff /m?*d ; is ; is 8 is ?o?8t r?b@8 ?s ?s ?s ?s ?s ?s ?s ?s ?s ?s ?s ?s fff3f8ff @ ?@8 8 r;
8 o; 8 t; 8 ; 8 ; 8 ; 8 ; 8 ; 8 ; 8 ; ?o?8t r?s?os ; is ; is? @id @o?@8 78007 ; is??dr8 ???? ?o?8t r?s?os ; is ; is? om; ? o? ; @ ; is?o@i, @ ?@8;is;is;is;is;is;is;is;is??,r8 ????; is; is; is; is ???? ;i?d ; is ; is@i@ od ?i?*8 ; @ ; is?o@i, @ ?@8 ?o?8t ?b@8 ; is ; is ffc7f807 ?i?*8 7f80ff ?s ?s fff3f8ff @ ?@8 ???? i ?@r; isid r;; ,
d o; r@ id rs 78007 d i ?o?8t r?b@8 ?s ?s ?s ?s fff3f8ff ?o?;n 7f80ff ?s ?s fff3f8ff @ ?@8 ?o?8t r?b@8 ?s ?s ?s ?s fffbf8ff /m?*d ; is ; is?o@i, @ ?@8is ;is ;isis ;is ;is ;is ;is ;is ; ; ?8t -1073221617?w; ?i?,8 ?is ; is ; is ; is,isoqs
8i?:8 ?dod di@ od ,iy;iso?s?@ o; i@ 30720 s o; r n ???? r; i?d? r@
8 i, ?e rs fffff807 ????r; iso8 @id o8; , 8 r@ d o8 r@ o8 s id os 16253176 i d , d ? e is i d , d ? e s ;
is rd i d , d ? e is i d , d ? e is d rd
8 o8 8 o; 8 o;
d r8 s o s

{block 14}
d r8
d r8
d r8
d r8
?o? ?o?@8 d r?ys
d r8
d r8 ?o?8t ?s?os i8 o; -;;,
-;@,
?ir?@
@i ?w 8 i?o@o, @ ?@8o s ; :8t -1073225713
; o; osoqs r 0 i d , d ? e d o8
is rd ?o?8t ?s?os i ii8 is @ ?s
d r;
d
d r8
d r8 ,i?v8 ?o?*8 ?m?@d ?si?s
?sr?s?s ?s?s ?s ?so?s ?s?@ ?y?@e ?i?@8 ;i?:8 ?i?98 ???7 ?sr?s ?s ?s??b? ?i?*8 di?98 ;iy8is ,is@iso?si/s ?sr?s ???? ????
d r8
d r8
d r8
d r8
d r8
d r8
d r8
d r8
d r8 ?o?8t ???q 7f80ff ?s ?s ?s ?s ?s ?s ?s ?s ?s ?sr?do, ?o??8 @ ?@8 ???? ???? ; is ; is8i@ od 8i?sis ;i is ; is ; is ???? ???? s o
d r8 8 o; ; i; i -s @ *8t ,r?8t rvb;n 7380f3 ?s ?s i8 o; 7fe07f ?;o, 268374014 ?w ?s m?om?
q@:? /@io,/@ow@i?s?@o?si?sr?so?s
d r8
d r8
d r8
d r8
d r8
d r8
d r8
d r8
d r8
d r8
d r8 ?o?8t ???q 7801f ; is ffc7f807 ?o?@8 r; i@e ; isr, is ?o??8 @ ?@8 i8 o;r?do, 1ffe0ff ii/o?d -:@,
s,rb; i8 o; i8 o; i8 o; i8 o; i8 o; ?o?8t ???q 7f80ff ; is ; is ; is ; is ; isr?do, ?o??8 @ ?@8 ?s i8r-do, 1e1e0f3 isobvs -267390961 d r;
d r8
d r8
d r8
d r8
d r8 ; is ; is ; is ; is ; is ; is ; is ; is ; is ???? ???? ?o?8t ???q 7f80ff ; is ; iso?s ;o?so?s ?s ?sr?do, ?o??8 @ ?@8 ???? ???? ; is ; is8i@ od 8i?sis ;i is ; is ; is ; is ; is i8 r8 i8 o; -s i8 -s -s -s -s mqrmq 6r6i d ,r?;n iso7st osos8t 404232216

{block 15}
@i?sis ?i?:8r?so/s ?s ?s ?s ?s ?s ?s ?s ?s ?s ?so/sr?s ,i?*8 8i?98 i8 o; ?s ?sr?do, f3c0ff o-8@8 1010580540 isoqst ; i@ 8 o;
d r8 s o ?i?98 ???7 ?sr?s ?s ?s??b? ?i?*8 ;ibd ; is ; is ; is ; is @i?sis ?i?:8r?so/s ?s ?s?i@i, ,i?:8 r?s?is ?s ?so/sr?s ,i?*8 8i?98 ?s ?s ?s ?s ?s ?s ?s ?s??v? ???? ?s?@ ?s ?s ?s ?s ?s ?s ?s ?s ?s i8 f3c0ff iv;@8 -132155362 8 o@ 8 o; ; i; iso7st o-9;n ffc0f3 i8 i@ ?s ?s ?s ?s ?s ?s ?s ?s ?s ?s ?s ?s ?s ?s ?s ?sr?do, ?o??8 @ ?@8 ?o?8t ???q 7f80ff ?s ?s ?s ?s ?s ?s ?s ?s/@oo,o?v?8 ?o??8 *m?*d ?o?8t ?o?@8 i8 o; i8 o; i8 o; i8 o; i8 o; i8 o; i8 o; i8 o; ?o?@8 @ ?@8 s o s o s o s o s o s o s o s o s o s o s o s o ?o?8t ?o?@8 i8 o; i i i i ?o?@t @o?@8 8 i 8 i 8 i ???? ???? ?o?8t ?o?@8 i8 o; i i i i ? o?s ? o?s i i i i i8 o; ?o?@8 @ ?@88i i i8i i i8i i i8i i i8i i i ???? ????8 i8 i8 i8 i8 i ???? ???? 8 i 8 i 8 i ?i?98 ?i?*8 i i i i i8 o; ?o?@8 @ ?@8 ?o?8t ?o?@8 i8 o; 8 i 8 i ?i?98 ?i?*8 i8 o; i8 o; i8 o; ?o?@8 @ ?@8 ???? ????r8 isod ;is ;8 @ d r; s ; r8 od s 3c003 8 is ?o?8t ?o?@8 i8 o; i8 o; i8 o; ?o?@8 ?o?@8 i8 o; i8 o; i8 o; ?o?@8 @ ?@8 ?o?8t ?o?@8 i8 o; i8 o; i8 o; ?w?*d ?m?*d i i i i i8 o; ?o?@8 @ ?@8 ; is ; is ; is ; is ; is ; is ; is ; isr?s ; ?o??8 @ ?@8 ???? ????r?s ?si/so?s ;iy@is sr?8is ? is , is 16711934 8iwsr8
@im;iso?si/s ?sr?s

{block 16}
d rd
8 o8 d r;
s os ???? ????r; isi8 r@@ ?
8 o@ s o@ i8 rs @ is -1 ???? i o 8 osrd ;is i8 os d ;
s ; 8 rd s 3c001 8 os d i s i
s i ss t
s i
s o is 0 s i
s i ss t
s i
s o
d r8
d r8
d r8
d r8
d r8
d r8 s o s o s o s o s o s o s o s o s o ???? ???? s o s o s o s o s o ?o?8t ?o?@8 i8 o;-:d, -:@, 54473535 54473535 ?io?w 8i-s i8 i ?o?@8 @ ?@8 s o s o s o
d r8 ???? @ ?@8 8 o@ ; i; iso7 osom8t 4080c0s t
s i
s o is 0 ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ; ; rs ; is ;r@ di@ ?so , is ;r@ di@ ?s , ; ; , ?s di@ ;r@ , is ?so di@ ;r@ ; is ; rs ; s t 8 os 8 os ; is ; is 8 os 8 os s t ;i?, ;i?, ;i?, ;i?,8 osd iss o8 o; i8 , @ s ; rs 8 os d is s o8 o; i8 , @
; ;i?, ;i?, ;i?, ;i?,i;; s8 rsd oss r8 r; o8 id @ ; s 8 rs d os s r8 r; o8 id @ ;
8 d s

{block 17}
s n d os d os d os s n s n d os d os d os s n s n ; 8 s n d os d os d os s n s n d os d os d os s n 8 os 8 os 8 os 8 os 8 os 8 os 8 os 8 os 8 os 8 os 8 os 8 os d rs d rs d rs d rs d rs d rs d rs d rs d rs d rs d rs d rs d rs d rs d rs d rs d rs d rs ;i?, ;i?, ;i?, ;i?, d rs d rs d rs d rs d rs d rs d rs d rs d rs d rs ??d
di?, 8i?, 8i?, ; d ; ; ;is ; ;idid ;idid ;rdi ;rdi ;rdi ;rhi 8i@id 8i@id sr? ; ; d 8i?, 8i?,
di?, ??d s t s t s t d rs d rs d rs 8 os 8 os ;i?, ;i?,
di?, ??d ,r@ @ @ @ @ ,r@ ,r@ i-; o-8 r-d i8 od s n d os d os d os s n s n ; 8
di?, @i?,t od rs 234881136 ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? 8 os s n 134744072 4210752

{block 18}
colorforth jul31 chuck moore public domain 24 load 26 load 28 load 30 load
dump 32 load ;
icons 34 load ;
print 38 load ;
file 44 load ;
north 46 load ;
colors 56 load ; mark empty

{block 19}

{block 20}

{block 21}

{block 22}

{block 23}

{block 24}
macro
swap 168b 2, c28b0689 , ;
0 ?dup c031 2, ;
if 74 2, here ;
-if 79 2, here ;
a ?dup c28b 2, ;
a! ?lit if ba 1, , ; then d08b 2, drop ;
2* e0d1 2, ;
a, 2* 2* , ;
@ ?lit if ?dup 58b 2, a, ; then 85048b 3, 0 , ;
! ?lit if ?lit if 5c7 2, swap a, , ; then 589 2, a, drop ; then a! 950489 3, 0 , drop ;
nip 4768d 3, ;
+ ?lit if 5 1, , ; then 603 2, nip ;
or 633
binary ?lit if swap 2 + 1, , ; then 2, nip ;
and 623 binary ;
u+ ?lit if 681 2, , ; then 44601 3, drop ;
? ?lit a9 1, , ;

{block 25}
pentium macros: 1, 2, 3, , compile 1-4 bytes
drop lodsd, flags unchanged, why sp is in esi
over sp 4 + @
swap sp xchg
0 0 0 xor, macro 0 identical to number 0
a 2 0 mov, never used?
a! 0 2 mov, unoptimized
@ eax 4 *, unoptimized
! edx 4 *
nop used to thwart look-back optimization
- ones-complement
2*
2/
if jz, flags set, max 127 bytes, leave address
-if jns, same
then fix address - in kernel
push eax push
pop eax pop
u+ add to 2nd number, literal or value
? test bits, set flags, literal only!

{block 26}
macros
over ?dup 4468b 3, ;
push 50 1, drop ;
pop ?dup 58 1, ;
- d0f7 2, ;
for push begin ;
*next swap
next 75240cff
0next , here - + 1, 4c483 3, ;
-next 79240cff 0next ;
i ?dup 24048b 3, ;
*end swap
end eb 1, here - + 1, ;
+! ?lit if ?lit if 581 2, swap a, , ; then 501 2, a, drop ; then a! 950401 3, 0 , drop ;
nop 90 1, ;
align here - 3 and drop if nop align ; then ;
or! a! 950409 3, 0 , drop ;
* 6af0f 3, nip ;
*/ c88b 2, drop f9f72ef7 , nip ;
/mod swap 99 1, 16893ef7 , ;
/ /mod nip ;
mod /mod drop ;

{block 27}
for n push count onto return stack, falls into begin
begin -a current code address - byte
*next aa-aa swap for and if addresses
next a decrement count, jnz to for, pop return stack when done
-next a same, jns - loop includes 0
i -n copy loop index to data stack
end a jmp to begin
+! na add to memory, 2 literals optimized
align next call to end on word boundary
or! na inclusive-or to memory, unoptimized
* mm-p 32-bit product
*/ mnd-q 64-bit product, then quotient
/mod nd-rq remainder and quotient
/ nd-q quotient
mod nd-r remainder
time -n pentium cycle counter, calibrate to get actual clock rate

{block 28}
compiled macros
2/ f8d1 2, ;
time ?dup 310f 2, ; forth
@ @ ;
! ! ;
+ + ;
*/ */ ;
* * ;
/ / ;
2/ 2/ ;
dup dup ; arithmetic
negate - 1 + ;
min less if drop ; then swap drop ;
abs dup negate
max less if swap then drop ;
v+ vv-v push u+ pop + ;
writes acn for write next drop drop ;
reads acn for read next drop drop ;
oadf qwerty
save 0 dup nc @ writes stop ;

{block 29}
these macros may be white, others may not
@ etc arithmetic
negate n-n when you just cant use -
min nn-n minimum
abs n-u absolute value
max nn-n maximum
v+ vv-v add 2-vectors
nc -a number of cylinders booted
save write colorforth to bootable floppy
oadf save as spelled by qwerty. for typing with blank screen

{block 30}
colors etc
block 100 * ;
white ffffff color ;
red ff0000 color ;
green ff00 color ;
blue ff color ;
silver bfbfbf color ;
black 0 color ;
screen 0 dup at 1024 768 box ;
5* 5 for 2emit next ;
cf 25 dup at red 1 3 c 3 a 5* green 14 2 1 3 3e 5* ;
logo show black screen 800 710 blue box 600 50 at 1024 620 red box 200 100 at 700 500 green box text cf keyboard ;
empty empt logo ;

{block 31}
block n-a block number to word address
colors specified as rgb: 888
screen fills screen with current color
at xy set current screen position
box xy lower-right of colored rectangle
dump compiles memory display
print compiles screen print
icon compiles icon editor
logo displays colorforth logo
show background task executes following code repeatedly
keyboard displays keypad and stack

{block 32}
dump x 2097152 y 2101760
one dup @ h. space dup h. cr ;
lines for one -1 + next drop ;
dump x !
r show black screen x @ 15 + 16 text lines keyboard ;
it @ + @ dup h. space ;
lines for white i x it i y it or drop if red then i . cr -next ;
cmp show blue screen text 19 lines red x @ h. space y @ h. keyboard ;
u 16
+xy dup x +! y +! ;
d -16 +xy ;
ati f4100000 ff7fc000 or
byte 4 / dump ;
fix for 0 over ! 1 + next ; dump

{block 33}
does not say empty, compiles on top of application
x -a current address
one a-a line of display
lines an
dump a background task continually displays memory
u increment address
d decrement
ati address of agp graphic registers
byte a byte address dump
fix an-a test word

{block 34}
icons empty macro
@w 8b66 3, ;
!w a! 28966 3, drop ;
*byte c486 2, ; forth ic 0 cu 351
sq xy @ 10000 /mod 16 + swap 16 + box 17 0 +at ;
loc ic @ 16 24 8 */ * 12 block 4 * + ;
0/1 8000 ? if green sq ; then blue sq ;
row dup @w *byte 16 for 0/1 2* next drop -17 16 * 17 +at ;
ikon loc 24 for row 2 + next drop ;
adj 17 * swap ;
cursor cu @ 16 /mod adj adj over over at red 52 u+ 52 + box ;
ok show black screen cursor 18 dup at ikon text ic @ . keyboard ; 36 load ok h

{block 35}
draw big-bits icon
@w a-n fetch 16-bit word from byte address
!w na store same
*byte n-n swap bytes
ic -a current icon
cu -a cursor
sq draw small square
xy -a current screen position, set by at
loc -a location of current icons bit-map
0/1 n-n color square depending on bit 15
row a-a draw row of icon
+at nn relative change to screen position
ikon draw big-bits icon
adj nn-nn magnify cursor position
cursor draw red box for cursor
ok background task to continually draw icon, icon number at top sr 4210752 4210752 4210752

{block 36}
edit
+ic 1 ic +! ;
-ic ic @ -1 + 0 max ic ! ;
bit cu @ 2/ 2/ 2/ 2/ 2* loc + 10000 cu @ f and 1 + for 2/ next *byte ;
toggle bit over @w or swap !w ;
td toggle
d 16
wrap cu @ + 16 24 * dup u+ /mod drop cu ! ;
tu toggle
u -16 wrap ;
tr toggle
r 1 wrap ;
tl toggle
l -1 wrap ;
nul ;
h pad nul nul accept nul tl tu td tr l u d r -ic nul nul +ic nul nul nul nul nul nul nul nul nul nul nul nul 2500 , 110160c dup , , 2b000023 , 0 , 0 , 0 ,

{block 37}
edit icon

{block 38}
png empty w 54 h 32 d 4
frame 1e80000 ; file 42 load 40 load
-crc a here over negate + crc . ;
crc -crc ;
wd -a here 3 and drop if 0 1, wd ; then here 2 2/s ;
bys n-a . here swap , ;
plte 45544c50 48 bys 0 3, ff0000 3, ff00 3, ffff00 3, ff 3, ff00ff 3, ffff 3, ffffff 3, 0 3, c00000 3, c000 3, c0c000 3, c0 3, c000c0 3, c0c0 3, c0c0c0 3, crc ;
png awh d @ / h ! d @ / w ! wd swap 474e5089 , a1a0a0d , ihdr 52444849 13 bys w @ . h @ . 304 , 0 1, crc plte idat 54414449 0 bys swap deflate crc iend 444e4549 0 bys crc wd over negate + ;
at 1024 * + 2* frame + ;
full 4 d ! 0 dup at 1024 768 png ;
pad 1 d ! 46 -9 + 22 * nop 25 -4 + 30 * at 9 22 * nop 4 30 * png ;

{block 39}

{block 40}
lz77 macro
@w 8b66 3, ;
*byte c486 2, ;
!b a! 289 2, drop ; forth
*bys dup 16 2/s *byte swap ffff and *byte 10000 * + ;
. *bys , ;
+or over - and or ;
0/1 10 ? if 1e and 1e or drop if 7 ; then f ; then 0 and ;
4b dup 0/1 9 and over 6 2/s 0/1 a and +or swap 11 2/s 0/1 c and +or 8 or ;
pix dup @w d @ 2* u+ 4b ;
row 1, dup w @ 2/ dup 1 + dup 2, - 2, 0 dup 1, +adl for pix 16 * push pix pop or dup 1, +adl next drop +mod d @ 1024 2 * * + ;
deflate 178 2, 1 0 adl! h @ -1 + for 0 row next 1 row drop ad2 @ *byte 2, ad1 @ *byte 2, here over 4 + negate + *bys over -4 + !b ;

{block 41}

{block 42}
crc macro
2/s ?lit e8c1 2, 1, ;
1@ 8a 2, ; forth ad1 48546 ad2 48600
array -a pop 2 2/s ;
bit n-n 1 ? if 1 2/s edb88320 or ; then 1 2/s ;
fill nn for dup 8 for bit next , 1 + next drop ;
table -a align array 0 256 fill
crc an-n -1 swap for over 1@ over or ff and table + @ swap 8 2/s or 1 u+ next - nip ;
+adl n ff and ad1 @ + dup ad2 @ +
adl! ad2 ! ad1 ! ;
+mod ad1 @ 65521 mod ad2 @ 65521 mod adl! ;

{block 43}

{block 44}
dos file
blks 256 * ;
w/c 18 blks ;
buffer 604 block ;
size -a buffer 0 1 reads buffer 98f + ;
set n ! buffer 0 1 writes ;
cyls n-nn 1 swap w/c -1 + + w/c / ;
put an dup 2* 2* size set cyls writes stop ;
get a size @ 3 + 2/ 2/ cyls reads stop ;
.com 0 63 blocks put ;

{block 45}
blks n-n size in blocks to words
w/c -n words per cylinder
buffer -a 1 cylinder required for floppy dma
size -a locate size of 2nd file. floppy has first filler then file allocated. filler is 2048 bytes, to fill out cylinder 0. names at most 8 letters, all caps. directory starts at buffer 980 +
set n size. file must be larger than your file.
cyls n-nn starting cylinder 1 and number of cylinders
put an write file from address
get a read file to address

{block 46}
north bridge empty macro
4@ dup ed 1, ;
4! ef 1, drop ; forth dev 15104
nb 0 dev ! ;
sb 3800 dev ! ;
agp 800 dev ! ;
ess 6800 dev ! ;
ric 7800 dev ! ;
win 8000 dev ! ;
ati 10000 dev ! ;
add cf8 a! 4! cfc a! ;
q 80000000 + add 4@ ;
en 8004 q -4 and or 4! ;
dv dup 800 * q swap 1 + ;
regs dev @ 19 4 * + 20 for dup q h. space dup h. cr -4 + next drop ;
devs 0 33 for dup q dup 1 + drop if dup h. space drop dup 8 + q dup h. space over h. cr then drop 800 + next drop ;
ok show black screen text regs keyboard ;
u 40 dev +! ;
d -64 dev +! ;
test ff00 + a! 4@ ; ok

{block 47}

{block 48}
ascii macro
1@ 8a 2, ; forth
string pop ;
cf-ii string 6f747200 , 696e6165 , 79636d73 , 7766676c , 62707664 , 71757868 , 336a7a6b , 37363534 , 2d313938 , 2f322e30 , 2b213a3b , 3f2c2a40 ,
ch fffffff0 and unpack cf-ii + 1@ ff and ;
ii-cf string 2a00 , 0 , 2b2d0000 , 2725232e , 1b262224 , 1f1e1d1c , 28292120 , 2f000000 , 3a43355c , 3d3e3440 , 484a3744 , 3336393c , 38314742 , 3f414632 , 493b45 , 0 , a13052c , d0e0410 , 181a0714 , 306090c , 8011712 , f111602 , 190b15 ,
chc ffffffe0 + ii-cf + 1@ ff and ;

{block 49}

{block 50}
clock macro
p@ ec 1, ;
p! ee 1, drop ; forth
ca 70 a! p! 71 a! ;
c@ ca 0 p@ ;
c! ca p! ;
hi 10 c@ 80 and drop if ; then hi ;
lo 0 p@ 80 and drop if lo ; then ;
bcd c@ 16 /mod 10 * + ;
hms0 4 bcd 100 * 2 bcd + 100 * 0 bcd + ;
hms hms0 2 ms dup hms0 or drop if drop hms ; then ;
ymd 9 bcd 100 * 8 bcd + 100 * 7 bcd + ;
day 6 c@ -1 + ;
cal hi lo time - hi lo time + 748 ;

{block 51}

{block 52}
lan empty 3f8 54 load init
no block 4 * 1024 ;
send no for dup 1@ xmit 1 + next drop ;
receive no for rcv over 1! 1 + next drop ;
no 18 7 18 * ;
backup no for dup send 1 + next drop ;
accept no for dup receive 1 + next drop ;

{block 53}
sr 4210752 4210752 4210752

{block 54}
serial 3f8 2e8 1050 macro
p@ a! dup ec 1, ;
p! a! ee 1, drop ;
1@ 8a 2, ;
1! a! 288 2, drop ; forth
r 0 + + ;
9600 12 ;
115200 1 ;
b/s 83 3 r p! 9600 0 r p! 0 1 r p! 3 3 r p! ;
init b/s 16550 1 2 r p! 0 4 r p! ;
xmit n 5 r p@ 20 and drop if 0 r p! ; then pause xmit ;
cts 6 r p@ 30 and 30 or drop if cts ; then xmit ;
st 6 r p@
xbits 30 and 10 / dup 1 and 2* 2* + 2/ ;
st! 4 r p! ;
?rcv 5 r p@ 1 and drop if 0 r p@ then ;
rcv ?rcv if ; then pause rcv ;

{block 55}
p@ p-n fetch byte from port
p! np store byte to port
1@ a-n fetch byte from byte address
1! na store byte to byte address
r n-p convert relative to absolute port address. base port on stack at compile time. compiled as literal at yellow-green transition
9600
115200 baud-rate divisors. these are names, not numbers
b/s set baud rate. edit to change
init initialize uart
xmit n wait for ready and transmit byte
cts n wait for clear-to-send then xmit
st -n fetch status byte
xbits n-n exchange status bits
st! n store control byte
?rcv fetch byte if ready. set flag to be tested by if
rcv -n wait for ready and fetch byte

{block 56}
hexagon empty col 0 del 2105376
lin dup 2/ 2/ dup 2* line ;
hex xy @ 7 and over 2/ for lin 7 + next over for lin next swap 2/ for -7 + lin next drop ;
+del del @ nop
petal and col @ + f8f8f8 and color 100 hex ;
-del del @ f8f8f8 or 80808 + ;
rose 0 +del -176 -200 +at f80000 -del petal 352 -200 +at f80000 +del -264 -349 +at f800 -del petal 176 -200 +at f8 +del -176 98 +at f8 -del petal 176 -200 +at f800 +del ;
ok show black screen 512 282 at rose text col @ h. space del @ ff and . keyboard ; 58 load ok h

{block 57}
draws 7 hexagons. colors differ along red, green and blue axes.
col color of center hexagon
del color difference
lin n draws 1 horizontal line of a hexagon
hex n draws top, center and bottom. slope 7 x to 4 y is 1.750 compared to 1.732
+del n increment color
-del n
petal n draw colored hexagon
rose draw 7 hexagons
ok describe screen. center color at top

{block 58}
pan
in del @ 2* 404040 min del ! ;
out del @ 2/ 80808 max del ! ;
r f80000
+del del @
+col and col @ + f8f8f8 and col ! ;
g f800 +del ;
b f8 +del ;
-r f80000 -del +col ;
-g f800 -del +col ;
-b f8 -del +col ;
nul ;
h pad nul nul accept nul -r -g -b nul r g b nul out nul nul in nul nul nul nul nul nul nul nul nul nul nul nul 250000 , 130d01 dup , , 2b000023 , 0 , 0 , 0 ,

{block 59}
in increment color difference
out decrement it
r
g
b increment center color
-r
-g
-b decrement it
+del redefine with ;
+col change center color
nul ignore
h describe keypad

{block 60}

{block 61}

{block 62}
timing empty macro
out e1e6 2, ; forth
tare time - 1000 for next time + ;
tare+ time - push 1000 for dup next c pop time + ;
test tare time + - 1000 for out next time + ; next 3 loop 5.7 /next 2 /swap 25 swap 7.2 macro
c! c88b 2, drop here ;
loop 49 1, 75 1, e2 here - + 1, ; forth
try time - 1000 c! loop time + ;