%! % Demo: Winning the mico game restoration % ============================================================== % Copyright c 2014 by Don Lancaster & Synergetics, Box 809, Thatcher, AZ, 85552 % (928) 428-4073 Email: don@tinaja.com Website: http://www.tinaja.com % Consulting services available http://www.tinaja.com/info01.html % Linking welcome. Reposting expressly forbidden. % All commercial rights and all electronic media rights ~fully~ reserved. % Linking usually welcome. Reposting expressly forbidden. Version 1.1 % This is a shortened demo of http://www.tinaja.com/canal/newhang3.pdf and % http://www.tinaja.com/canal/newhang3.psl rewritten from the ground up with % better documentation. By using a -F -R trailer on Acrobat XI Distiller as % noted below,reads and writes can be restored. This allows expanded click-thru % images to be auto executed from within a .psl file internal to Distiller. % Other benefits include auto positioning and tracking of the and slightly % improved image resolution % Be sure embed fonts are properly set! You will also need an image copy of % http://www.tinaja.com/canal/Reduced_Images/allen0x500x400.jpg moved to an % appropriate directory on your pc as noted below. % This pre Distills both automatic urls AND jpeg image clickthru conversion! % JavaScript nav buttons still need added in full Acrobat % see http://www.tinaja.com/canal/canaleng1.js for button insertion code %%%%%%%%% % This comment is a reminder that Distiller needs a /F /R to use disk files %%%%%%%%% % Define and alter your full gonzo.ps path reminder here It might be % C:/Users/don/Desktop/Dist-FR/gonzo.ps % Preplace gonzo.ps from http://www.tinaja.com/post01.shtml#gonzo to above directory % Make sure there are no previously active instances of distiller. % Then run distiller ONLY from % "C:\Program Files (x86)/Adobe/Acrobat 11.0/Acrobat/acrodist.exe" /F /R run % Then drag and drop this file into Distiller. %%%%%%%%% % Set Directory Headers %%%%%%%% /gonzodirectory (C:\\Users\\don\\Desktop\\Dist-FR\\) store % dbl rvse slashes for ps /imagelocaldirectory (C:/Users/don/Desktop/canal/images/) store % sin fwd slashes for win /imageremotedirectory (http://www.tinaja.com/canal/images/) store % sin fwd slashes for chrome % mergestr merges the two top stack strings into one top stack string /mergestr {2 copy length exch length add string dup dup 4 3 roll 4 index length exch putinterval 3 1 roll exch 0 exch putinterval} def %%%%%%%%% % This code activates gonzo utilities for this document %%%%%%%%% % Required preload of gonzo.ps and adjusted for your machine per above. gonzodirectory (gonzo.ps) mergestr run % double reverse slashes in PS! /guru { gonzo begin ps.util.1 begin printerror nuisance begin} def guru % activate gonzo utilities %%%%%%%%%% % This code locks pdfmark commands out of a PostScript printer. %%%%%%%%%% /pdfmark where {pop}{userdict /pdfmark /cleartomark load put} ifelse %%%%%%%%%% % This code changes the page size to smaller %%%%%%%%%% [/CropBox [0 0 520 620] % set the weird size in points X Y. /PAGES pdfmark %%%%%%%%%% % This code is needed for the automatic url placer %%%%%%%%%% % Requires a defined name for the url below % Activate with text text |/surl urlname |/eurl text text % /surl "start url" marks the beginning of a text sequence to be urled. % It also paints the text blue... /surl {mark /blue cvx 0.33 /setgray cvx % change text to blue /currentpoint cvx % remember box start /urly /exch cvx /store cvx /urlx /exch cvx /store cvx ] cvx % complete deferred command printlist exch 3 index exch put % stuff into gonzo printlist exch 1 add exch % increment gonzo list count } def % /eurl "end url" unmarks the end of a text sequence and sets up % the pdfmark needed to define the Acrobat web link. /eurl {mark % start deferred proc exch % position url string % /black cvx 0 /setgray cvx % turn blue marker off % maintextcolor /setrgbcolor cvx % reset to main text color??? /aqua cvx /black cvx /makeurl cvx % defer call of url builder ] cvx % complete deferred proc printlist exch 3 index exch % stuff into gonzo printlist put exch 1 add exch % increment gonzo list count } def % /makeurl generates the pdfmark, receiving a {(urlstring) makeurl}. % Note that it is not called until formatted printlist time... /urlover 0.2 def % fraction of hot area over bounds /makeurl { /cururlname exch store % save the url string mark % start pdfmark currentfont /ScaleMatrix get 3 get /fsize exch store % guess height /Rect [ urlx fsize urlover mul sub % set box left x urly fsize urlover mul sub % set box left y currentpoint exch fsize urlover mul add exch fsize add ] /Border [ 0 0 0] % [0 0 0 ] = none; [0 0 2] = debug /Color [ .7 0 0 ] /Action <> /Subtype /Link /ANN % annotation type pdfmark % call pdf operators } def % /makeurlx generates the box specific pdfmark, receiving % a {(urlstring) makeurl}. % Note that it is not called until formatted printlist time... /makeurlx { /cururlnamex exch store % save the url string mark % start pdfmark /Rect [ xpos % set box left x ypos 0.9 sub % set box left y xpos 2.8 add % box right x ypos 0.9 sub 2.8 add % box right y ] /Border [ 0 0 0] % [0 0 0 ] = none; [0 0 2] = debug /Color [ .7 0 0 ] /Action <> /Subtype /Link /ANN % annotation type pdfmark % call pdf operators } def %%%%%%%%%%% % This code inserts color effects mid line %%%%%%%%%% %%%%%%%%%%%%%% COMPACT VERSION OF COLORIZER II %%%%%%%%%%%%%%%%%%%%%% /settint {dup /currenttint exch store 5.999 mul dup floor cvi /&cbar exch store dup floor sub /&cwt exch store [ {/setgray [ /dup cvx 0.3 &cwt 0.59 mul add /ge cvx [1 /exch cvx &cwt 0.59 mul 0.30 add /sub cvx 1 &cwt sub 0.59 mul 0.11 add /div cvx /dup cvx 1 &cwt sub /mul cvx &cwt /add cvx /exch cvx ] cvx [ &cwt 0.59 mul 0.3 add /div cvx /dup cvx &cwt /mul cvx 0] cvx /ifelse cvx /setrgbcolor cvx] cvx /def cvx} {/setgray [/dup cvx 0.59 1 &cwt sub 0.3 mul add /ge cvx [1 &cwt sub 0.3 mul 0.59 add /sub cvx &cwt 0.3 mul 0.11 add /div cvx /dup cvx &cwt /mul cvx 1 &cwt sub /add cvx /exch cvx 1 /exch cvx] cvx [1 &cwt sub 0.3 mul 0.59 add /div cvx /dup cvx 1 &cwt sub /mul cvx /exch cvx 0] cvx /ifelse cvx /setrgbcolor cvx] cvx /def cvx} {/setgray [/dup cvx 0.59 &cwt 0.11 mul add /ge cvx [&cwt 0.11 mul 0.59 add /sub cvx 1 &cwt sub 0.11 mul 0.30 add /div cvx /dup cvx 1 &cwt sub /mul cvx &cwt /add cvx 1 /exch cvx] cvx [0 /exch cvx &cwt 0.11 mul 0.59 add /div cvx /dup cvx &cwt /mul cvx] cvx /ifelse cvx /setrgbcolor cvx] cvx /def cvx} {/setgray [/dup cvx 0.59 1 &cwt sub mul 0.11 add /ge cvx [1 &cwt sub 0.59 mul 0.11 add /sub cvx &cwt 0.59 mul 0.30 add /div cvx /dup cvx &cwt /mul cvx 1 &cwt sub /add cvx 1] cvx [0 /exch cvx 1 &cwt sub 0.59 mul 0.11 add /div cvx /dup cvx 1 &cwt sub /mul cvx /exch cvx] cvx /ifelse cvx /setrgbcolor cvx] cvx /def cvx} {/setgray [/dup cvx 0.11 &cwt 0.30 mul add /ge cvx[&cwt 0.30 mul 0.11 add /sub cvx 1 &cwt sub 0.30 mul 0.59 add /div cvx /dup cvx 1 &cwt sub /mul cvx &cwt /add cvx /exch cvx 1] cvx [ &cwt 0.30 mul 0.11 add /div cvx /dup cvx &cwt /mul cvx /exch cvx 0 /exch cvx ] cvx /ifelse cvx /setrgbcolor cvx ] cvx /def cvx} {/setgray [ /dup cvx 0.30 1 &cwt sub 0.11 mul add /ge cvx[ 1 /exch cvx 1 &cwt sub 0.11 mul 0.30 add /sub cvx &cwt 0.11 mul 0.59 add /div cvx /dup cvx &cwt /mul cvx 1 &cwt sub /add cvx ] cvx [ 1 &cwt sub 0.11 mul 0.30 add /div cvx /dup cvx 1 &cwt sub /mul cvx 0 /exch cvx] cvx /ifelse cvx /setrgbcolor cvx ] cvx /def cvx} ] &cbar get exec exec} bind def /beige {0.11 settint} def % examples of convenience operators /aqua {0.52 settint} def /blue {0.67 settint} def /lime {0.44 settint} def /red {0 settint} def %%%%%%%%%%% % This code converts a .JPG image into a PS image %%%%%%%%%%% /jpegimageprocwithlink { % hoffset voffset hres vres urlfrom urlto save /snap2 exch def /inurllink exch store % grab link filename /infilename exch store % grab passed pix file /photoscale exch store /vpixels exch store /hpixels exch store % (\nvpixels = )print vpixels == % (\nhpixels = )print hpixels == % (\photoscale = ) print photoscale == % (\ninurllink = ) print inurllink == % (\ninfilemane = ) print infilename == translate % adjust position for final figure ??? inurllink setareaurl % autolink sizing color model 0 0 translate % set page position hpixels vpixels scale % magnify unit square photoscale dup scale /infile infilename (r) file def % establish input read file /Data {infile /DCTDecode filter} def % define a data source << % start image dicationary /ImageType 1 % always one /Width hpixels % JPEG width in pixels /Height vpixels % JPEG height in pixels /ImageMatrix [hpixels 0 0 vpixels neg 0 vpixels ] /DataSource Data % proc to get filtered JPEG /BitsPerComponent 8 % color resolution /Decode [0 1 0 1 0 1] % per red book 4.10 >> image % call the image operator ypos snap2 restore /ypos exch def } def /setareaurl { % for auto include routine /cururlname exch store mark % start pdfmark /Rect [ 0 0 hpixels photoscale mul vpixels photoscale mul ] /Border [ 0 0 0] % [0 0 0 ] = none; [0 0 2] = debug /Color [ .7 0 0 ] /Action <> /Subtype /Link /ANN % annotation type pdfmark % call pdf operators } def %%%%%%%%%%% % This code inserts a PS figure proc into a fixed location %%%%%%%%%%% %%%%%%%%%%% % This code autopositions a PS figure proc %%%%%%%%%%% %%%%%%%%%%% % This image code for sequential pages %%%%%%%%%%% %%%%%%%%%%% % These code snippets do various things %%%%%%%%%%% /tinton1 {mark 0.33 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tintoff {mark 0 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /to {tinton1 aqua font6} store /tx {tintoff black font1} store /su {surl} store %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%% document specific resources start here %%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%% % define url's to be generated ... ---> zzzzz <---- search marker %%%%%%%%% << /anasazai (https://en.wikipedia.org/wiki/Ancient_Pueblo_peoples) /aqueduct (https://en.wikipedia.org/wiki/Aqueduct_(water_supply)) /AZrepublic (http://www.azcentral.com/news/articles/20130223arizona-hanging-canal-mystery.html) /bajada (https://en.wikipedia.org/wiki/Bajada_(geography)) /cnf (http://www.fs.usda.gov/coronado/) /association (https://en.wikipedia.org/wiki/Archaeological_association) /ccc (https://en.wikipedia.org/wiki/Civilian_Conservation_Corps) /glyphspair (http://www.tinaja.com/canal/cansum1.pdf) /grids (http://www.uapress.arizona.edu/Books/bid1582.htm) /gurgrm01 (http://www.tinaja.com/gurgrm01.shtml) /hohokam (https://en.wikipedia.org/wiki/Hohokam) /hunt (http://www.jstor.org/discover/10.2307/40035308?uid=3739552&uid=2&uid=4&uid=3739256&sid=21103435122901) /joanna (www.azcentral.com/opinions/articles/20130226editorial-admiring-our-forebears.html) /lefthand (http://www.tinaja.com/glib/lefthand.pdf) /maildon (mailto:don@tinaja.com) /mailneely (mailto:neelyja@utexas.edu) /mimbres (https://en.wikipedia.org/wiki/Mimbres_culture#Mimbres_culture) /mongollon (https://en.wikipedia.org/wiki/Mogollon_culture) /murphy (http://www.tinaja.com/glib/neely1.pdf) /newhang3 (http://www.tinaja.com/canal/newhang3.pdf) /tinsamp1 (http://www.tinaja.com/tinsamp1.shtml) /newhangshow3 (http://www.tinaja.com/canal/newhangshow3.pdf) /pinalino (https://en.wikipedia.org/wiki/Pinale%C3%B1o_Mountains) /prebajada (http://www.tinaja.com/glib/prebajada.pdf) /safford (https://en.wikipedia.org/wiki/Safford,_Arizona) /salado (https://en.wikipedia.org/wiki/Salado_culture) /scs (https://en.wikipedia.org/wiki/Natural_Resources_Conservation_Service) /stratigraphy (https://en.wikipedia.org/wiki/Stratigraphy) /tinaja (http://www.tinaja.com) /usatoday (http://www.usatoday.com/story/news/nation/2013/02/24/hanging-canals-whet-appetite-for-ancient-history/1941797) /waterlevel (http://en.wikipedia.org/wiki/Water_level) /whtnu15 (http://www.tinaja.com/whtnu15.shtml) >> {mark exch /eurl cvx ] cvx def} forall %%%%%%%%%% % define fonts and main document gonzo params %%%%%%%%%% /setpagefonts { /cstretch 0.015 def /sstretch 0.015 def /font0 /StoneSans-Bold 1.6 gonzofont /font1 /StoneSans 0.95 gonzofont /font2 /StoneSans [0.95 0 0.25 0.95 0 0 ] gonzofont /font4 /StoneSans 0.85 gonzofont /font3 /StoneSans-Bold 0.85 gonzofont /font6 /StoneSans-Bold 0.85 gonzofont /font7 /StoneSans-Bold 1.05 gonzofont % subheaders /font8 /StoneSans-Bold [0.65 0 0 0.65 0 0.4] gonzofont /font9 /StoneSans-Bold 1.05 gonzofont /txtwide 36 store /yinc 1.2 store /kern 0.1 store /texttop 51 store /textleft 3 store /amacro {(zy0) stringmacro /ypos ypos ypara add def} def % start drop cap /bmacro {(iFy1) stringmacro /ypos ypos ypara add def} def % finish drop cap } store /nogrid {true} store /ggnum (Winning) store % header for pagenumber /pagenum 1 def % initial pagenumber %%%%%%%%%%%%%% % Image common code for sequential pages %%%%%%%%%%%%%% /imagecommoncode { /font6 /StoneSans [2.4 0 0 2.8 0 0 ] gonzofont /font7 /StoneSans 1.2 gonzofont /green { 0 0.4 0 setrgbcolor} store /black { 0 0 0 setrgbcolor } store % text image link [ /Rect [2.0 42.2 39 44.2] /Action << /Subtype /URI /URI imageurl >> /Border [0 0 0] /Color [1 1 1] /Subtype /Link /ANN pdfmark % gps image link [ /Rect [2.0 40.1 39 42.1] /Action << /Subtype /URI /URI acmegpsurl >> /Border [0 0 0] /Color [1 1 1] /Subtype /Link /ANN pdfmark % image image link [ /Rect [2 13.7 39 38.6] /Action << /Subtype /URI /URI imageurl >> /Border [0 0 0] /Color [1 1 1] /Subtype /Link /ANN pdfmark /blue {0 0 1 setrgbcolor} store % not sure why these are needed here /setblue {mark 0 0 1 /setrgbcolor cvx ] cvx printlist exch 3 index exch put exch 1 add exch} store /setblack {mark 0 0 0 /setrgbcolor cvx ] cvx printlist exch 3 index exch put exch 1 add exch} store 0 47.5 (|6|/green ) imagename mergestr cl 0 45 (|7|/green ) imagetitle mergestr cl blue 3 42.8 (|7|/setblue ) imageurl mergestr cl 3 40.6 (|7|/setblue ) imagegps mergestr cl black } store %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%% actual page content starts here %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% WINNING RESTORATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 28 50 10 setgrid % create grid false { 45 58 showgrid } if setpagefonts /startnewpage { black beige 0.35 setgray 21 -2.5 (|3\320|j|j) ggnum 20 string cvs mergestr (|j |j) mergestr pagenum 10 string cvs mergestr (|j|j\320) mergestr cc aqua showpage %% start next page /pagenum pagenum 1 add store font1 textleft texttop } def /to {tinton1 red font6} store /yinc 1.1 store /txtwide 22 store /lefcol 0 store /rtcol 24 store /p1top 36 store /p2top p1top yinc add store /ypara 0 store /pm 1.2 store /dropindent 1.8 store /dropcount 2 store /initialcap { /pmrun 0 def /indentcount dropcount def /dropflag true def} def /amacro {(zi0) stringmacro /ypos ypos dropcount yinc mul add store} def % start drop cap /bmacro {(F1) stringmacro /ypos ypos dropcount yinc mul sub def} def % finish drop cap /dropinitialcap {initialcap /ypos ypos yinc dropcount mul sub store} store /dropinitialcap {initialcap /ypos ypos yinc 1 sub store } store /indentinitialtext {initialcap font0 /ypos ypos yinc dropcount mul 1 add add store } store /font; /StoneSans-Bold 1.25 gonzofont /font: /StoneSans-Bold 4 gonzofont /font8 /StoneSans-Bold 2.3 gonzofont 0 0.75 0.84 setrgbcolor 22.5 51 (|:Winning |j|j|jthe) cc 22.5 46.5 (|:Micro |j|j|jG|kame) cc 16.8 44 (|;by |/surl Don Lancaster|/tinaja ) cl black /firstbox {gsave translate roundbox gsave 0.7 0.90 0.98 setrgbcolor fill grestore line3 0 0.75 0.84 setrgbcolor stroke black save /snap1 exch store /yinc 1.1 store /txtwide 20 store 9.5 1.7 (|3Dilettantism won't do when it comes |k|k|k to learning about microcomputers.) cc snap1 restore grestore grestore } store 0.5 % x offset 0.7 % y offset 19 % x width 2.9 % y height 0.1 % radius 12.4 38.8 firstbox lefcol p1top (|z|/to |8H |y|y|y|/initialcap |F |1|/to ands on is everything.|/tx The only way to ever learn anything about computers is to jump in with both hands and feet, get on line and do some computing. Until you actually do and see just what the micro world is all about, you have accomplished nothing. For you must do things yourself, on your very own terms, in front of a working, real computer, alone.|p |h It is both funny and sort of sad to hear any student say he just took a DP course but couldn't get any CPU time. He got taken, not the course. |h You can become computer literate by applying computers, not by having someone tell you about them or by reading about them. |h Understand a timing loop by writing one and watching it work. Make an interface by taking a trlac, an optocoupler and a 100-Watt light bulb and shining light on the real world. Find out what an interrupt is by interrupting a computer. Do it all by yourself. |h|z |/to You have to make misteaks.|/tx If you are learning micros or developing any new product, half your experiments should fail. A canned set of exercises on a micro trainer ends up next to worthless if everything falls into place and works perfectly the first time.|p |h In the micro world, you make mistakes to learn and to move forward. Thus, you should expect mistakes. Prepare for them and welcome them. Aggressively seek them out. |h Of course, it makes sense to |/to never make the |/to same mistake twice.|/tx |1 Build on what you have. To |j ) cl rtcol p2top (|1expand your microcomputer universe, try new things that may fall. Find out why they fall, and use this as a newer and bigger base to work from.|p |h Usually, you'll never be anywhere near where you think you are in solving any hardware or software problem. Unexpected surprises and plain old stupidity are always between you and reality. If you think you may have something working perfectly, you probably do not even understand the prob­lem. |h|z |/to You must mix hardware and software.|/tx Some heads-in-the-clouds "pure" software people out there still believe that hardware is some mundane inconvenience standing between them and real "computing." And there are technician types who do everything with bushel baskets crammed full of integrated circuits. |h|p Neither approach is good. Sometimes a simple and inexpensive hardware circuit might replace scads of software. Other times and other places, a few lines of elegant software might eliminate the need for custom circuits or a special device. |h Winning computer products will combine both hardware and software, using the best features of each to give you the simplest system along with the lowest possible cost. |h This means that if you are a hardware person, you should learn programming and learn it fast. If you have a software background, start soldering or breadboarding with a vengeance. |h Synergy says that 1 + 1 = 4. This is definitely the case any time you get an opimum mix of |k ) cl startnewpage %%%%%%%%%%%%%%%%%%%%%%% page two %%%%%%%%%%%%%%%%%%% 10 10 scale % huh? 2.9 5.0 translate false { 45 56 showgrid } if setpagefonts /p1top 53 store /p2top 53 store /txtwide 22 store /firstbox {gsave translate roundbox gsave 0.7 0.90 0.98 setrgbcolor fill grestore line3 0 0.75 0.84 setrgbcolor stroke black save /snap1 exch store /yinc 1.1 store /txtwide 20 store 9.5 4.8(|3You |jcan learn a lot more |jabout micros watching fourth graders zap Klingons than you ever will |jin any university COBOL course.|j|j |k) cc snap1 restore grestore grestore } store 0.5 % x offset 0.7 % y offset 19 % x width 7 % y height 0.3 % radius 24.7 27 yinc 2 div sub firstbox lefcol p1top (|1hardware and software interacting with each other. Neither can stand alone. Not any longer. |h |/to The real world is fuzzy.|/tx Some textbooks and lab experiments do work every time. Everything is nice and clean and neatly tied up. You do exactly what you need to do the job, no more, no less. |h|p Unfortunately, reality does not work that way. Firstoff, you must deal with people, and that will always mess things up. Key items will be missing or late. The magic chip may just be a figment of an ad writer's dreams. Or a problem may have a simple and inexpensive technical fix that ends up politically or socially unacceptable. Egos conflict. |h Expect and accept fuzziness. As you get into a new computer area, things will usually start out completely confusing. Then they might become fuzzy. Then they should become, for a glorious instant, crystal clear. Then, of course, they will get fuzzy again as you become more involved. |h As you go to the bigger picture, expect more fuzziness. Also recognize that there really isn't very much in the way of real world beginnings or endings. Rather, things sort of dribble off into the great whatever. |h Micros might|j\320|jjust might|j\320|jbe the missing link between ordinary people and intelligent life in the universe. |h|z |/to Hit the basics hard.|/tx Any 6502 micro freak can sit down and immediately "prove" that the 6502 is ten times better than most any other micro in the world. The trouble is that you can do the same with any other micro family as well. |h|p For most micro uses, it makes no difference which micro from which family you use. Even if there temporarily was a "best" micro, other factors such as your own skills and attitude, the available software, the elegance of all of your competitor's programs and so on will reduce any advantage of the "best" micro to zilch. |h If you don't happen to like the "best" micro, just wait a month or two, and it will get shot out of the saddle by something far more promising. |k )cl rtcol p2top (|1This all means that |/to the micro you learn is not |/to the micro you wil use.|/tx Later on, there will be much better ones to work with, and they are sure to have completely different tech details. |h|p To beat this, hit the basics hard. All the micros have address space and addressing modes. All do have interrupts, use subroutines, clocks, ports, memory, and I/O. Use any micro you like to add tech details to the fundamentals. But be sure to get the essentials down solid.|z |h |/to Reach out and put the touch on some one.|/tx All of the nickels in the micro world are newly to get made in places where people are not yet using micros. Find those places and get involved with these areas and people on their own terms.|p |h ) cl /p2mid 24.9 store rtcol p2mid (|p|y|h |1Put all the new micros to work feeding cattle, treating sewage, gambling against Wall Street, designing looms and mixing cement, baking calzones, milking goats, hulling pecans, questing tinajas, animating video, co-oping groceries or hybridizing sinsemilla, improving wood stoves, redesigning bicycles, or restoring steam calliopes. Or improving stream gauges, selling paper clips, cutting dress patterns, or teaching trumpets. |h When you do reach out, always work with the other person's terms and language, bending the micro info to fit as best you can. If they are smart enough to learn micros, they won't need you for anything. Find places where they don't yet know that micros can help. Then jump in. |h|z |/to Don't reinvent the wheel. Instead, find and steal |/to the plans.|/tx Much of your needed and obvious micro-related information has already been done and is readily available for your use. For instance, if you want to drive a teletype or another printer, use some else's driver routine. Don't stop what you are doing and invent your own. Unless you |j ) cl startnewpage %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% page three %%%%%%%%%%%%%%%%%%% 10 10 scale % huh? 2.9 5.0 translate false { 45 56 showgrid } if setpagefonts /p1top 53 store /p2top 53 store /txtwide 22 store lefcol p1top (|z|y |1truly want to know how a drive program works. Or how to go about modifing one. |p|h Scads of Morse code trainer programs are out there. Why write yet another? The same goes for sorting and word justification subroutines. And you'll find more versions of Lunar Lander than there are moons in the solar system. How many Hangman or Nim games have you seen? |h Now, if you want to explore these programs, that's fine. But if your goal is using something rather than creating something, find out what has already been done and go with it. Or improve it and then go with it. |h Refer to monitor listings, software exchanges, micro mags, ap notes, club newsletters, program books, and micro information exchanges for scads of stuff to use. |z|h |/to Better wrong now than right later.|/tx In anything you do in the micro world, your first attempt will be wrong and will need reworking. So, quickly kludge up your first attempt and let your mistakes show you the way to go. Often, you don't even understand what the real problem is until you are inside a program or some hardware looking at it. |h|p Try a simple, quick, and dirty tactic that least sends you in roughly the direction you want to go. Make some guesses. Take a stab at it. |h In your early attempts, if it works, use it. Start your project flying more or less right side up. Later on, you might go back and add structure, elegance, convenience, and simplicity. Add the final spit and polish on the way out the door. But never early in the game. |h|z |/to Write it down!|/tx And not on the back of an old envelope, either. Documentation is the password to avoid self-destruct modes. You do not record only final programs and schematics. Instead, keep track of what you did and why you did it. Neatly, and in some semblance of order. Keep accurate records of where you have gone and where you are heading. Put together files of everything that is related to your projects. ) cl rtcol p2top (|p|y |1Software will be worthless if you can't show someone else how to use it. Hardware has no way to operate if there is no way to connect or fix it. You must be able to go back and reuse or modify what you did a week or a year ago. |h Documentation is not just a hex dump; it is a micro way of life. You cannot survive without it. |h|z |/to Back it up!|/tx Continuously save ongoing copies of your work. Never erase or overwrite any older copy. For when (|jnot if|j) something goes terribly wrong, you need to be able to easily restore. And not lose all of your previous work. |h|z |/to Don't separate work from play.|/tx Which of these is more important: Designing some efficient sort algorithm for a business general leger program or figuring out how to use Adventure's oily slime? |h|p In the long run, that oily slime is vastly more important because that is what is stimulating interest in micros and what is now making people computer literate. |p|h Any program run on a computer is a game! However, stuffy institutions, banks, bureaucrats, and other so-called "serious" computer users have rules that say you are not supposed to smile while you are playing their games. |h Simon says don't smile. It is still a game. |z|h |/to You will never get enough|/tx No matter how far you have gone in microcomputing and no matter how much of what kind of hardware and software you have on hand, you will always "need" more of something. |h|p More memory? Start with a 1k trainer, then 4K, then a 16K micro. The overfill the 16 megawords of an extended micro space. H|1ard copy? Start off with Excedrin headache number ASR-33, then on to thermal, a Selectric, and then a daisywheel. |h From Plain Jane video, step up to graphics, color, hi-res, and then super resolution color with full gray scale. From cassettes, it is on to floppy, dual floppies, quad density, and on to bunches of new stuff not yet even thunk of. ) cl startnewpage %%%%%%%%%%%%%%%%%%%%%%%%%%%%% page four %%%%%%%%%%%%%%%%%%% 10 10 scale % huh? 2.9 5.0 translate false { 45 56 showgrid } if setpagefonts /p1top 53 store /p2top 53 store /txtwide 22 store lefcol p1top (|p|y |1There never is, nor will there ever be, a time when you have "enough" of anything. What looks like a light at the end of a tunnel is just a train that is speeding towards you. |h You will find only one way out of the "more" syndrome. Always go with what you have. Make it work. Live with it as long as you can. Force it to pay. Make it do. Use it up. Wear it out. |h|z |/to If it is old line, stomp on it.|/tx Some pre-micro people and institutions are still kicking around the lunatic fringe of the micro world. Who persist with enormous, bureaucratic, centralized, insanely priced, and unavailable megacomputers run by an elite priesthood singing the incantations of some arcane language. They utterly fail to recognize the power of the micro as a highly personal, one-on- one, decentralized, inexpensive, interactive, and individual convivial tool. |h|p You can learn far more about micros in twenty minutes watching a pair of fourth graders zap Klingons that you ever will in a university course. |h Old line stuff includes IBM, batch processing, COBOL, decollators, Honeywell, key-to-disk, data encryption, FORTRAN, klutzy keypunches, and centralized billing. They are totally without any redeeming social values. They had their chance and blew it. We tried it their way and it didn't work. Old line fails to see the problem. |h|z |/to Always ask, "Why are you telling me this?"|/tx The useful products and ideas in the micro world are not heavily advertised. In fact, anything genuinely useful takes a lot of trouble to nail down. |h|p If a micro is widely or extensively advertised, it more than likely tells us that a something vastly better is now available elsewhere. If someone is radically trying to convert you to his micro or his way of doing things, the chances are he has drifted into right field and become snookered into a bad scene. He is looking for converts to ease the pain when they are shot out of the saddle. |h When anyone tries to tell you about micros, always ask, "What is the real reason you are telling |k |k ) cl rtcol p2top (|z|y |1me this?" Find out the motives involved. Then get a second opinion, check out another choice or find some different viewpoint before you plunge ahead. Or get sucked in. |h|z |/to Nail down all resources.|/tx It is easy to assume that formal courses and rather expensive hardbound textbooks are the only way to "learn" micros. In fact, these are two of the worst possible ways to become computer literate. Most of these learning aids are stillborn, hopelessly obsolete and badly misdirected. |h|p Anything you can relate to that involves micros is a resource. Your first and foremost resource is yourself through hands on experience. |h Other resources do include micro magazines, clubs, game playing or Dungeons and Dragons, micro trainers, computer stores, used hardware boards, tech journals, funky books, reader-service cards, benchmarks, students, teachers, surplus stores, trade shows, computer fairs, rap sessions and swap meets. |h But most important of all\274 |z|h |/to Go on your own vibes.|/tx There is no right or wrong direction in the micro world. In fact, 99.9 percent of the micro world remains unknown, unexplored and uncharted. So, if "they" insist on something, most often they do not have the faintest clue what they are talking about. |h|p If you are interested in something and want to go in that direction, fine. Do it! Your surest bet for long-term winning is to roll with your own vibes. Explore what you want to. Ignore the herd thundering the other way. Get off the beaten path. Make yourself your own best customer. |h Satisfy your own needs and your own curiosity. Put as much psychic energy and personal value as you can in the routes that you pick, and you are certain to win the micro game. |h You are, by definition, the center and the most important part of the micro universe. |h|z |/to Don't ever forget it.|/tx ) cl startnewpage % EOF