Att lägga pussel

Det är många som lägger pussel av olika slag. Oregelbundna träbitar i tusental eller det så kallade livspusslet. Spionen lägger också pussel. Själv har jag lite problem med tusentals oregelbundna träbitar – det leder ju inte till något annat än en vy över en schweizisk dalgång eller något slott. Och sådana kan man ju hitta på nätet – eller fotografera själv. Livspusslet har jag aldrig ens funderat över. Det blir som det blir. Och ändå sitter jag ibland med olikfärgade små bitar och pusslar…

Det började med i4004. Sjuttiotal. Intel hade fullt upp att erövra den nisch som dittills hållits ganska framgångsrikt av kärnminnena och hade nu, mest av en slump, kommit att producera urfadern till 8008, 8080 och hela det släkt som numera är ganska dominerande på processormarknaden.

Det första ”systemet” hade 1280 bytes minne (eller 1,25 k), klockan löpte med nästan 100 kHz och cykeltiden var 10,8 mikrosekunder. Men vi var glada och jobbade som sjutton med dessa knappa resurser. Det blev fixturstyrningar till mekaniska mätsystem och lite annat. Som programmeringshjälp hade vi en lapp med mnemonisk kod där även hexkoden för varje instruktion stod. Vi ritade flödesschemor och handkodade. Sådan lyx som en Teletype med remsläsare kom först senare. 110 Bd som ökades till 300 Bd i nästa generation. Promprogrammerare för de 256 bytes Eprom (inte EEPROM!) som var programminne.

Sedan tog det fart. Mos Technology, Fairchild, Motorola och andra startade med sina processorer och när Zilog presenterade sin Z80 tyckte vi att det nog fick räcka med arkitekturer och prestanda.

Så här kunde det se ut. Just detta exempel är lite dramatiskt eftersom jobbet gjordes i Magdeburg i gamla DDR. Passet hade STASI tagit hand om och det försäkrades att jag inte skulle få tillbaka det förrän anläggningen var godkänd av fabriksledningen. Utvecklingssystemet fick inte tas över gränsen från Västtyskland under det kalla krig som rasade för fullt. Så alla justeringar fick ske manuellt. Långa dagar blev det, om man säger…


(klicka för större bild)

Sedan tog det ännu mera fart – och handkodning blev ohållbart
Med 8086 (och snålvarianten 8088) klev vi in i sextonbitarsvärlden där det var möjligt att hantera siffror med viss precision utan att förbruka halva adressutrymmet. Men kodningen var ett problem.

Då dök Charles More upp med sin FORTH. Smart, stackbaserat och kodsnålt system som det var en fröjd att jobba med. Genom att definiera funktioner (Ord) och sedan skriva orden i rätt ordning blev källkoden lättläst och koden blev både snabb och effektiv. Strukturen blev klar och ren – detta var innan JSP blev populärt och om man tänkte sig för lite kunde data hela tiden läggas på och hämtas på stacken precis som på en HP-kalkylator. Med den skillnaden att stacken inte hade fyra nivåer utan i praktiken så många som applikationen krävde.

Sedan blev det mer och mer fältarbete med de problem som periferin ställde till med och andra sätt att arbeta gjorde att jag inte jobbade med programmering under ganska lång tid.

Men det sög allt lite i programmerartarmen emellanåt
Och plötsligt började det dyka upp behov av speciella mätfunktioner som inte fanns på marknaden. LabView säger någon. Ja, kanske det. Men jag ser inga fördelar med den typen av system, vi skaffade licenser för utveckling med runtime för att kunna köra fristående. Men det ville sig inte riktigt. Vi började kalla det LäbbView, så läbbigt tyckte vi att det var.

Så småningom vande vi oss och då kanske vi överdrev lite och började kalla det LoveView. Men vi ville ha något som inte krävde en rack med kort eller att man kopplade ihop flera olika enheter. Små batteridrivna enheter som man kunde ta i handbagaget på flyget och så billiga att man kunde lämna dem hos kunden en månad eller två. Och där passade inte LoveView.

Pusslet!
Jag hade sett Blockly några gånger och det verkade användas mest för stridsrobotar och andra hobbyändamål. Men lättarbetat var det. Och att MIT och Google stod bakom utvecklingen kändes tämligen seriöst. Efter några trevande försök insåg jag att det var just detta jag sökt. Hur illa man än tänker så är det nästan omöjligt att få till kod som inte ger en clean compile. Färdiga funktionsblock som klarar Androidappar eller bildskärmsvisning plockar man från en meny och det är inte alls omöjligt att få till ganska snygga och välfungerande apparater på en dag eller två. En ganska okänd processor med åtta kärnor verkar vara den enda processorn som har stöd i Blockly. Men med ca 100 MHz klocka och 32 bitars ackumulator duger den mycket bra i realtidssammanhang. Jag testade och blev mycket imponerad. Se bara så enkelt och snyggt det blir:


(klicka för större bild)

Det här jobbet, ett tändpulsdon för fyrkvadrant tyristorbrygga, tog förstås jämförelsevis lång tid, ungefär en månad inklusive utprovning mot hårdvara och motor. Men det var roligt hela tiden. 100% clean compiles och alla åtta kärnorna jobbade klanderfritt tillsammans. Det hade varit något att ha med i DDR. Jämför med första bilden där allt som sker är att en räknare i BCD uppdateras. Man kan inte säga annat än att utvecklingen gått i rätt riktning.

Så ser mitt pussel ut. Mycket bättre än alla de där hopplösa träbitarna som man aldrig kommer nån vart med.

Ha det bra i centrum eller periferi. Var den än ligger. Kommentarer läser jag gärna.

Gunnar Englund, GKE Elektronik AB

Läs Att mäta är att veta – och lära …
Läs Mera om elektrolytkondensatorer
Läs Glödlampor kan också ge problem
Läs Hur gammal kan elektronik bli
Läs kWh-mätarna och de höga elräkningarna
Läs Nätspänningen, harmoniseringen och Brexit.
Läs Stjärnor, deltan och andra metoder
Läs Svårt att koppla in en transformator?
Läs Djurgårdskalle och ljusbågen del 1
Läs Djurgårdskalle och ljusbågen del 2

 

3 Responses to “Att lägga pussel”

  1. Känner igen mig i det mesta, tror vi har ungefär samma erfarenheter.
    Funderar på nåt som men hör näst intill varje dag i media:
    Varför rapporterar man hela tiden om att barnen lär sig programmering allt mera tidigt, ofta i förskola eller redan innan dess…
    Det de gör är ju att lära sig glida runt på en pekskärm, klicka och öppna olika figurer, siffror, spel osv.
    Inget fel i detta, men programmering, kodning, kompilering osv i binärkod, hex, eller något programspråk är det ju inte…

  2. Those were the days 🙂

    Det är bland det roligaste man kan göra att få en resursknapp processor att göra mycket och med knappa programmeringshjälpmedel.

    Assembler forever 😉

    Och ja, jag håller med pf att det dom kallar ’programmering’ i skolan baara ’r nys. Tror det beror på okunskap hos lärarkåren och ansvariga skolledare/politiker.

  3. Ja, ”det är det roligaste man kan ha med kläder på kroppen” som det hette förr i världen, innan sådana uttalanden blev olämpliga och censurerades.

    Fast jag vet inte. Simma och dyka kan man ju göra med heltäckande randig baddräkt – och det är väl ändå att ha kläder på kroppen? Men helst badar jag näck, det finns gott om sjöar och små öar här i Bergslagen. Öar där man kan näcka av hjärtans lust.

    Om man ska få fram tillräckligt antal programmerare så krävs det lite mera än knappvana och att hitta på nätet. Det är alldeles rätt.

    Då frågar jag mig hur det ska ordnas. När man till och med anser att en sådan elementär sak som ”procent” är för svårt för kidsen och tänker inskränka matten till +, – och ”gångrat”. Detta eftersom ”delat med” verkar ge problem.

    Det finns de som anser att hela mattegrejen kan strykas från kursplanen. Men det är ju politiker som tycker så. Och om man ser hur de klarar enkel vardagsmatematik så kan man förstå dem.

    Men klokt eller bra är det inte.