PAG. 2 ATOM NIEUWS UIT DE FEDERATIE

Bestuur:

Voorzitter: Secretaris: Penningmeester: N.Stad J.Hartog T.Rutten

Plataanweg 47 Keyenbergseweg 60 Berkenlaan 24

1544 PB Zaandijk 6871 WK Renkum 3737 RN Groenekan Tel.075-280808 Tel.08373-13757 Tel.03461-3495 Clubwinkel: Hardware cie,: Redactie Atom Nieuws: P‚Grevelt Y.Tuk H. de Ruiter Emmastraat 22 Postbus 257 Polarisstraat 25

1782 PD Den Helder 2980 AG Ridderkerk 8303 AC Emmeloord Tel.02230-23453

Contributie 1987: fl. 60.00 Leden buitenland: fl. 75,00

Rekeningnummers Atom Computer Club: Giro 5244293

Redactie Atom Nieuws: Joop Ballijns Harry de Ruiter

Ledenadministratie: Datasheets:

S.van Leeuwen Y.TUK

Kompasstraat 32 Postbus 257

1973 PX IJmuiden 2980 AG Ridderkerk

Tel.02550-22435

Uiterste datum inlevering copy: nr. 87-6 20-11-1987

De clubwinkel: 80-koloms videokaart. incl.atie onderdelen behalve de RAM-IC's,

bouwpakket £1.130.00 80-koloms videokaart,gebouwd en getest.excl.RAM-IC's f1.180.00 Geheugenkaart; 16 kByte.excl.onderdelen fl. 35.00 Schakelkaart: meerdere EPROM's op Axxx ÊL. 47.50 Minischakelkaart Él. 16.00 Z-80 kaart;CP/M, excl. onderdelen £1.100.00 Herdruk ACORN NIEUWS 1982; 97 pag .wetenswaardiaheden fl. 6,00 ATOM NIEUWS jaargang 1983, ruim 450 pag. fl. 30.00 ATOM NIEUWS jaargang 1984, ruim 650 pag. fl. 35.00 ATOM NIEUWS jaargang 1985. ruim 650 pag. fl. 35.00 ATOM NIEUWS Jaargang 1986, ruim 500 pag. fl. 35.00 ATOM-WARE 1: Basic interpreter van de ATOM, 98 pag. Él. 6.00 ATOM-WARE 2; ATOM Disc Operating System,68 pag. fl. 5.00 ATOM-WARE 3; ATOM Monitor Operatina System.80 pag. fl. 5.00 Levering;

Bij uw reg.penningmeester, eventueel rechtstreeks bij de fed. penningmeester.Bij rechtstreekse bestelìing dient u het bedrag van het gewenste artikel te storten op de giro van de federatie onder vermelding van de naam van het artikel en uw lidnummer.Uw betaling dient vermeerderd te zijn met fl. 4.00 voor portokosten.

INHOUDSOPGAVE

ATOM NIEUWS PAG. 3

pag pag pag pag pag pag pag pag pag pag pag pag pag pag pag

Ue uN

6-8

9-16 17-26 27-29

30-54 35-39 48-57 58-66

68

uit de federatie inhoudsopgave

inhoud regioschijven diskprabieem

Gdump

Programmeren deel 5 Diversen

Teletype

Coordinaat parabool Atomflex

Fleximod

Universeel 1/0/board MDCR Turbo

Atomic Fower Regionale adressen

Te Paske

Joop Engels Martie Krukkeland Joop Engels D/R van Melzen R. Hopman

Bas Kasteel Bas Kasteel Bas Kasteel Jan Swinkels A&B

ATOM NIEUWS is een uigave van de federatie ATOM computerclubs

Ned/Belgie en verschijnt De redactie gaat er vanuit dat de ingezon inzender tenzij in

6 —- B keer per jaar. den copy gemaakt is door de

de publicatie uitdrukkelijk anders is vermeld.De aansprakelijkheid echter betreffend de auteursrechten ligt zonder enig voorbehoud volledig bij de inzender.

PAG

‚4 ATOM NIEUWS

INHOUD REGIOSCHIJVEN

et at et et en

Eet et ee et

INFOMSB IM, CODE JBOX JROXarc ASE-2, 0 RGE-3. 8 CONVERT INFOMBB SCR INFOMR+ inFOscr ADRSput INFOput RDRESSN CONVRT INFOset INFOSCs INFO INrDet ì ASE-728 ACE-730 GASDIS:S

dRL Dv ZWRL Dev MVIELD 2CUBEnv aCUBEmv BAL Jav JETmv

MVIE. A BODYmv CRSDIS MATRIX

AVE, M

bees 2680

2500

Aeon 8280 5220 2588 8288 2580 22e 5200 2508 5288 5288 2308 8208 2508 70 Kb 2300

1580 ed 788 kbd 1588 1588 1588 2902 1588 2980 2988 238

6088 2508 eed 2388 Raes

Far 8218 2508 E218 AFAF eea 8288 aaan REA s200 aFar 8218 AFAF 7aee eee tzB2

1588 008 CEBE Saa 15e 1588 1586 RERF 1588 REGE C2Bz C2B2

BIFFF eaLFF BaFFr B4BEF 21888 18e BeIBE SIDE eesse BiDFE ABS 2055 BIDFF BIIEL 8a57e BIDEF Based SIDFE 20458 e1808 21808 eas

84 2CB 1898 91808 BiTFE 22000 BsRB5 B2Leb ins BiD7i 8824 A18 DO7F7

ez 22 824 8s4 aen ese RB ear BED Lm BER vrg er: :8r 111 118 156 150 iS 15F IEF 17F

gaz sá5 esp gep 285 BRS eea 18E iLF 15D ik 165

AN. ba

AN. bua.

An. bu.b

DISKPROBLEEM TE PASKE ATOM NIEUWS PAG. >

Heeft u wel eens het probìieem, dat bij het *CAT-ten van een disk in de naam van een programma een spatie staat?

Voorbeeld:

>*CAT

TITEL DRIVE O OUAL : BLINK TEST CA

Het programma “TEST CA" is in zo'n geval niet te laden, omdat bij diskettegebruik geen spaties in de naam mogen/Kunnen staan. Met het commando “RENAME kun je dan dus ook niets beginnen.

Oplossing: Maak een hexdump van #2000:

>HEX#2000

2000 54 49 54 45 T 2008 42 4C 49 4E B 200C 4B 20 20 20 K 2010 54 45 53 54 T 2014 20 43 A1 20 enz.

TC 20 20 20 L I

U ziet hier dat de foutieve naam staat van #2010-#2017, Op #2014 staat #20 wat de ASCII-waarde is voor een spatie. In dit geval is dat ook de spatie in de foutieve naam.

Door nu deze waarde te wijzigen in bijvoorbeeld #2D (het teken '-'), wordt de naam "TEST-CA". Dit doet u door in te toetsen:

>2#2014=#2D {RETURN}

Nu moet de gewijzigde catalogus nog naar de diskette geschreven worden. Doe dit door achtereenvolgens:

>LINK#E75B;LINK#E74A {RETURN}

in te toetsen. (#E75B laat de drívemotor lopen en #E74A schrijft de gewijzigde catalogus naar de diskette.)

Met een >*CAT kunt u dit controleren.

Overigens gelden de adressen #E75B en #E74A alleen voor de originele DOS-ROM. Voor andere DOS-ROM'S moeten deze worden aangepast.

PAG. 6 ATOM NIEUWS GDUMP JOOP ENGELS BDUMP vaor Star printers

Het programma "SCREENDUMP” definieert een dump-eommanda waarmee gen 'CLEAR 4' scherm van de Atom op 2 verschillende manieren kan worden getekend, namelijk als klein (256*192) of als groot C768*384) plaatje, In het laatste geval wordt het &K plaatje doodeenvoudig vargroot afgedrukt!

Hest programma is geschreven in P-Charme en benodigt de mini-assembler. De routine is gedefinieerd als P-Charme uitbreidings-statement ,

De syntaxis van het statement ’GDUMP' (kies eventueel een andere naam) is als volgt:

’GDUMP Caode (‚masker C‚hor.verpl. [‚relocatie-adres J111'

2oals U ziet, zijn alle 4 parameters optioneel. Ze zullen nu een voor een worden besproken.

* mode

Hiermee kunt U kiezen tussen een kleine CO) en een grote afdruk (1) op de printer. De default-waarde is O (60 puntjes per inch horizontaal),

* masker

Deze parameter bepaalt de wijze waarop de tekening wordt weergegeven op de printer. Normaal dient U hier ofwel O ofwel =1 in te vullen. In het eerste geval wordt alles wat wit is op het scherm zwart op de printer en omgekeerd, in het tweede geval maakt de printer een exacte copie van het scherm. Met andere waarden kunnen speciale effecten worden bereikt: zie bv. het dump-programma voor de Epson printer dat Bram Poot schreef: AN. #4, pp,54-57, De default-waarde is 0,

* horizontale verplaatsing

Met deze parameter kan het plaatje een aantal posities naar rechts worden verschoven, bv. om het precies in het midden te krijgen: zie weer het programma van Bram Poot,

De default-waarde is cok hier 0, d.w.z. geen verplaatsing.

* relocatie-adres

Deze laatste parameter biedt de mogelijkheid om ook een afdruk ts kunnen maken van een tekening die, om welke reden dan ook, niet vanaf #8000 maar elders in het geheugen ligt opgeslagen. De waarde van de parameter wordt beschouwd als het 'high byte’ van het startadres van de tekening: bij #40 bv. wordt dan het geheugengebied van #2000-#5800 als tekening beschouwd en dienovereenkomstig afgedrukt! De default-waarde is #80.

De routine zal een Foutmelding genereren als de printer niet is ingeschakeld of als de opgegeven plat-mode groter is dan 1. De routine kan worden gestopt met de 'ESC'-toets,

De machinecode beslaat 274 bytes. De routine benodigt tijdelijk 11 ZP-bytes: hier is dit #70-#7A (regels 250-350), wat eventueel aangepast kan worden.

Tenslotte: de routine is ontwikkeld voor de Star SG-10 printer. In principe moet zij echter op alle Star printers kunnen draaien. Ook trouwens op alle Atoms, want er is geen aansluiting voor een Be printerbit vereist! Veel plezier ermee.

GDUMP _ JOOP ENGELS

ATOM NIEUWS PAG. /

10 PROGRAM SCREENDUMP 510 DEC #03

zo 620 CMP @SEMICOL

30 PRINI $21;GOSUB a 5630 BEG CLOSE

40 PRINT $06;GOSUB a B40 CMP BCR

50 550 BEG CLOSE

50 $T=-”GDUMP”; T=T+LENCTD 560

70 PT-DUMP/256 {#80 ; TP1=DUMPX255; T?2=#B0; T=T+2

BO A=P;T!1=A 570 \READ PARAMETERS

30 END 680 JSR PARAM

100 680 CPY @#02 110aC 700 BCS DUMP+1 120 710 STY MODE

130 „BA A 720 JSR COMMA

140 .TA #3800 730 BCS CLOSE

150 740 JSR PARAM 150: STX = HOP 750 TYA

170: ETX = #03 750 AND G#3F 180: CR = #OD 770 STA IMASK 190:ESC = #1B 780 JSR COMMA 200: SPACE = #20 790 BES CLOSE 210:SEMICOL = #3B B00 JSR PARAM 220: Ast’ A = #41 B10 SIY KPOS

230: ASC'K = #48 B20 JSR COMMA 240: ASC'L = HUC B30 BCS CLOSE

250 B40 JSR PARAM 250: MODE = #70 B50 SIY PI+1

270: IMASK = #71 860 280: HPOS = #72 670: CLOSE

230: PT = #72 880 JSR STAT'END 300:BITMASK = #75 830

310: GBYTE = #76 300 \PRINTER READY? 320: VERTCOLUINT= #77 910 LDA PR'STATUS 330:GR'MODE = #7B Seo BMI DUMP+1 340: LINECOUNT= #79 930 350: BETNUM = #7A S40 \INIT MODE 360 950 LD& MODE 370:PORI'B _= #B0O01 950 BNE BIG

ORT'CIRL= #BOO3 870 R'STATUS= #BB01 380: LITILE

400: COMMA = #C231 830 LDA E#CO H10:STAT'END = #CHES 1000 STA VERTCOUNT 420: BASIC = #CS5B 1010 LDA EASC'K 430: PARAM = #CF3E 1020 STA GR'MODE 440 : NCHAR = #F2I1 1930 LDA e32 450:PRORIVE = #FEFB 10480 STA LINECOUNT H50:PR'DIR = #FFOB 1050 LDA @1 470 1050 STA BITNUM 480 1070 BNE BEGIN 450: DUMP 1080 500 \INIT POINTERS 1030:BIG 510 LDA @#00 1100 LOA @#50 520 SIA MODE 1110 STA VERTCOUNT 530 STA IMASK 1120 LOA GASC'L 540 SIA KPOS 1130 STA GR'MODE 550 STA PT 1140 LDA E64 560 LDA @#A0 1150 SIA LINECOUNT 570 SIA PI+1 1150 LDA @3 580 1170 STA BITNUM 530 \CHECK FOR END 1180 600 JSR NCHAR 11390: BEGIN

1200

PAG

8 ATOM NIEUWS

GDUMP_ JOOP ENGELS

1210 \PRINTER ON 1220 LDA @STX

1230 JSR PRDRIVE 1240

1250 \SET LINE SPACING 1260 \TO 6/72 INCH 1270 LDX 26

1280 JSR LINE'SPACING 1230

1300 \TAB X SPACES 1310: SPACES

1320 LOX KPOS

1330 BEQ GRAPH 1340 LDA @SPACE 1350: SPACEPRINT 1350 JSR PRORIVE 1370 DEX

1380 BNE SPACEPRINT 1380

1800 \INIT GRAPHIC MODE 1410: GRAPH

1420 LDA GESC

1430 JSR SEND

1440 LDA GR’MODE 12450 JSR SEND

1460 LDA @#00

1470 JSR SEND

1480 LDA BITNUM 1480 JSR SEND

1500

1510 \SEND GRAPHIC BITS 1520 LDY @#00

1530

1540:NBYTE

1550 LDA @#80

1550 STA BITMASK 1570

1580: LOOP1

1590 STX GBYTE 1600: LOOP2

1610 LDA CPT),Y 1620 AND BITMASK 1630 CMP @e#O1

1640 PHP

1650 ROL BBYTE 1560 PLP

1670 LDA MODE

1580 BEQ INCREMENT 1680 ROL GBYTE 1700: INCREMENT 1710 TYA

1720 CLC

1730 ADC @#e20

1740 TAY

1750 CMP VERTCOUNT 1750 BCC LOOPe2 1770 SBC VERTCOUNT 1780 TAY

1790 LDA GBYTE 1800 EOR IMASK

1810 1820 1830 1840 1850

1860:

1870 12880 1850 1800 1310 1320 1930 1840 1350 1860 1370 1380 1830 2000 2010 2020 2030 2040 2oso 2060 2070

2080:

2030 2100 2110 2120 2130

2140:

2150 2150 2170 2180 2130 2eoo 2e10 eeeo 2230

2240:

2250 2250 2270 2280 2e30 2300

2310:

2deo 2330 2340

JSR SEND CPX MODE BEQ NBIT JSR SEND JSR SEND NBIT

LSR BITMASK BNE LOOPI INY

CPY @#20 BNE NBYTE LDA @CR JSR PRORIVE

\ESCAPE KEY? LOA PORT’B AND @#20

BEQ OUIT

\UPDATE POINTER CLE

LDA PT

ADC VERTCOUNT STA PT

BCC TEST 'IF’READY INC PT+1

TEST’ IF 'READY DEC LINECOUNT BNE SPACES

\RESET PRINTER TO \6 LINES PER INCH QUIT

LDX @e12

JSR LINE'SPACING

\PRINIER OFF LDA BETX JSR PRORIVE

JMP BASIC

LINE'SPACING LDA @ESC JSR SEND

LDA @ASC'A JSR SEND TXA

SEND PHA JMP PR°DIR

23501; RETURN

PROGRAMMEREN DEEL 3 __ MARTIE KRUKKELAND ATOM NIEUWS PAG. 9

Dit is het vervolg van de serie gestruktureerd programmeren {Deel 3). in het vorige deel heb ik meegedeeld, dat ik mijn oplossing van het sortser-probleem zou geven, nou hier komt hij dan :

PROGRAM SORTEER

PROC INTIALISEER, T,G FOR Tet TO 19

INPUT G TTT NEXT T PEND

PROC DRIK-AF-TABEL.T FOR Tai TO 19 PRINT TTET)’ HEXT T PEND

PROC SORT, K,L FOR Ket TO 49 FOR Lei TO 2 IF TTALODTT(L+ES THEN VERWISSEL NEXT L NEXT K BEND

PROC VERUISSEL,H H=TT (1) TILL ETT (LAD TTH =H

PEND

DIM TT(16} INITIALISEER SORT DRUK-AF-TABEL END

Ik heb getracht om het programma rechtover te zetten van PsÒ naar BAIC (met uitzondering van het 'DIM’ statement, daar deze niet binnen procedure's of functies mogen staan).

Hu is aak te zien dat regelnunmers niet nodig zijn, ze moeten er nog voor warden geplaatst. Ook is te zien dat door in te springen, de ruktuur van het programma rog dui ijker uitkomt,

FAG.10 ATOM NIEUWS PROGRAMMEREN DEEL 3 _MARTIE KRUKKELAND

Als U zelf al geoefend hebt in het tekenen van PSD's zal het U zijn opgevallen, dat ze veel makkelijker te tekenen zijn als de FLOW,

U hebt alleen een potlood of pen en gom nodig en een liniaal (een tekenmal is zelfs omslachtig),

Bij het tekenen van PSD moet U er wel aan denken, dat een PSD niet groter kan zijn dan het velletje papier waar hij op wordt getekend, er bestaat nl, geen mogelijkheid om aan te geven dat het vervolg van de PSD op een ander vel verder gaaat, (bij de FLOVU is dit wel mogelijk door gebruik te maken van connectors).

Als het wel groter is moet U kijken of in dit grote PSD vok gedeelten aanwezig zijn, die aangeroepen kunnen worden als een subroutine of procedure of functie, die U dan ap het andere velletje tekend.

Hiermee wordt berijkt, dat Uw programma is opgebouwd vit een aantal eenheden (module's), waardoor het veel overzichtelijker is, zodat later fouten gemakkelijker kunnen worden opgespoord.

Nu gaan we een iets complexer programma ontwikkelen, nl. en spel,

We kennen dit spel allemaal wel:, je hebt sen aantal domino-stenen oid, op tafel liggen, je speelt het met twee personen, en je neemt om de beurt 1,2 of 3 stenen van de stapel, en wie de LAATSTE steen wegneemt heeft VERLOREN,

Nu is het helaas zo, dat als je de truck kent, niemand meer met je wil spelen.

Het zou daarom mooier zijn als onze computer voor tegenstander kon spelen (en als het kan een sterke tegenstander is),

Hoe pakken we het aan?

We gaan eerst kijken hoe de loop van het erogramma is:

het programma stopt als alle stenen weg zijn. Simpel toch??

We hebben dus het volgende PSD al klaar: (de variabele 'STENEN' geeft het aantal stenen aans het aantal is van te voren bekend).

SPEL

[ \speel’

TOTDAT STENEN =D

Binnen “SPEEL” nemen de camnuter en wij om de beurt een van de stapel (1,2 of 3 stenen),

Om ons zelf een kans te geven om te winnen, nemen we beurt, en na elke beurt controleren we de stand (stenen=2), In 'ZET VAN SPELER' en "ZET VAN COMPUTER’ nemen de zpe computer ieder een aants} r z

PROGRAMMEREN DEEL 3 _MARTIE KRUKKELAND

ATOM NIEUWS PAG. 41

Speel

Deulk AF “er 2u nog NysTeven) Ss Teven ove” | Yzer van speler) STEWEN =O LJa vee pruk Af “ER 2YW weg ‘peuk aP } STENEN, STENEN OVER “pe Lompuren VET VAN COMPUTER | wow en STENEN = O heerk ye aal za Druk AF De Spelen HEEFT, GewWONMe

is geworden, heeft de hierdoor verloren,

stenen @ nomen en

het zantal af stenen we t beeindiad ‘geldt het zelfde,

ER' verder uitwerken, en om hem geldig te taten zijn?

DT

d

an t zijn, EN 8 zijn, EN

het aantal nog aanwezigestenen zijn sijne wit is),

EN

hieraan niet is voldaan! opnieuw, controle kunnen we ook laten zien waarom de het PSD kan er dan zo uit komen te zien:

innen met het nnemen van een onaeldia:

en keer iets moeten invoeren).

zet ongeldia

zet, zodat we in ieder

Ta

PAG_1e ATOM NIEUWS PROGRAMMEREN DEEL-3 MARTIE KRUKKELAND

ZET VAN speler

Druk ar “hoeveel STenau”

Loeki Gaubol

mat Stann := STEN En Gaubal

Als aan alle voorwaarden is voldaan, komen we in de meest rechtse 'NEE' tak van de uitvraging terecht, waar de beurt 'GELDIG' wordt verklaart, en wij de procedure 'ZET VÁN SPELER’ verlaten,

Hierna is de beurt aan de computer om een aantal stenen te nemen, Oit is moeilijker om in een programma te verwerken, want als men alleen een random aantal van 1,2 of 3 zou nemen, dan zou de computer nooit kunnen winnen, tenzij wij nog dommer zouden zijn...

Koe kunnen we de computer “intelligentie” geven dus hoe 'weet’ de computer hoe hij het spel kan winnen.

Laten we uitgaan van onszelf: (WE), tegen de computer: (HIJ),

Wanneer weten we zeker dat we gewonnen hebben?

Juist, als na onze beurt er nog 1 steen liet. Die hij dus weg moet nemen, We mogen maar 1,2 of 2 stenen weg nemen, dus tijdens onze beurt lagen er nog Itt of 142 of 143 stenen (is dus 2,3 of 4 stenen), Hoeveel stenen heeft hij er hiervoor dan gehad???

Als hij maximaal 3 stenen maa wegnemen iwij houden dan het minimale aantal over (=2)) had hij er dus 24+3=5 stenen (S-i=4, 5-2=23, 5-3=2 stenen voor ons), In onze beurt daarvoor hebben wij er dus voor gezorgd dat hij er 5 kreeg,

Wij hadden er dus 5+1=65,542=7 of 54228 stenen, en daarsaor had hij er dus 9 (ga zelf maar na (zie voorgaande bij 5 stenern)),

Als we het voorgaande bekijken, komen we tot de conclusie dat we de tegenstander een aantal stenen moeten geven, waarvan we zeker weten dat we dan zullen winnen, Deze aantallen zijn in iederaeval | en 5. we hadden ook al 9 gevonden (ziet u al de regelmaat 7277), Het volgende aantal zal zijn: 19 daarns 17, 2 85, 29 enz, vcorschotelen kunnen we + t

Dus als we onze tegenstander deze getallen deze getallen

de z

als

niet verliezen, Omgekeerd

PROGRAMMEREN DEEL 3 _MARTIE KRUKKELAND ATOM NIEUWS PAG.13

voorschoteld,..,.,..!

Deze aantallen noemen we het ’streefdoel". Stel: we hebben nog 19 stenen, wat is het streefdoel; het streefdoel is dan 17, dus we nemen er 2 weg en we kunnen niet meer verliezen,

Is het mogelijk het streefdoel te bepalen zonder iedere keer in bovenstaande lijst te kijken: Ja en wel op 2 manieren,

Door een rekenkundige berekening en door een serieeles berekening.

De laatste gaat met de formule ((NK4) +1) waar bij ‚N zolang wordt opgehoogd (vanaf 8 tot ,,…) todat de uitkomst net onder of gelijk aan het aantal stenen zit. De eerste methode gaat sneller, f#n is simpel: t+{4k(de integere waarde van ((stenen-1)/4)) Nou-ja simpel?r,..... Deze gaan we hier toepassen, U mag zelt een PSD maken van de andere methode en dit uittesten,

Voor de 'ZET VAN COMPUTER! kunnen we de volgende PSD opschrijven: ZET VAN COMpUTER

[ “gepAAL STREEFDOEL | aantal := stewev- steeervoel aaubal zo Ek a

geul ar “pe compuben weent en aanbel

STENEN! = STEVEN aantal

Het beslissings disaram in de PSD dient om er voor te zorgen dat, als het aantal stenen al een streefdoelwasarde heeft (wij winnen dus), de computer tach een geïdige zet doet,en doer er dan maar | te nemen maakt hij een grotere kans om het spel toch nos te winnen , en tevens ordt aan het einde van het spel automatisch de laatste steen wegaendmen N

Als u zelf een ander versie van 'BEPAAL STREEFDOEL’ maakt, moet u er wel zaan denken dat in het hovenstaande PSD de variabele ‘AANTAL’ alleen de waarden @ t/m 3 mag aannemen,

Hieronder staat het PSD van: Bepaal Steerveel

eerst 2100 + wistewen -| /5)) |

EAG.:4 ATOM NIEUWS PROGRAMMEREN DEEL 3 MARTIE KRUKKELAND

Simpel niet waar Laat ik daarom ook een PSD voor de andere methode maar geven:

Bepaal smmeerdoel

Teller :=0 STRoardts al tz \ NC *rellee)

Tellen := Tellen +1 Toroak (rellee td) H > sTevneu

Het streefdoel moet kleiner of gelijk zijn aan het aantal stenen. Daarom loopt dit programma totdat de berekening uitwijst: hij is groter geworden, en op dat moment heeft het steefdoel nog de vorige waarde (dus kleiner of of gelijk),

en voor de mensen die graag willen winnen:

Bepoal smeerdoal

pozl:= ganden getal Lo In 3)

Totpab boel STeihen

Stoeerdoal:= STeWen— voel

Nu hebben we alle rrogramma delen in peain aantal stenen i na aflooe n

: “ve Kunnen nd spelen:

PROGRAMMEREN DEEL 3 MARTIE KRUKKELAND ATOM NIEUWS PAG,1

Spel mek sreuen

STENEN := CEV mab wput ef pavdam, gtbal (14% 30) ar votbe woandfe BS)

‘spel’

voer tw op mw, = (za. se wee)

Tervat opnmiauw NEET"

Nu kunnen we de PSD's vertalen naar BASIC,

PS, erobeer ‘BEPAAL STREEFDOEL! eens te schrijven als een functie,

De functie luidt dan i,m.v. ‘PROC BEPAAL-STREEFDOEL' bv, 'FUNCTEON STREEFDOEL (STENEN), waarbij stenen wordt vervangen door de variabele die u gebruikt om het aantal stenen aan te geven,

Tevens dient u dan in 'ZET VAN COMPUTER’ de aanroep BEPAAL STREEFDOEL' te laten vervallen.(P5, Laat Functie Waam wiet ME aantsep dx Azs-teppucero(s) Sera Beqranon Kus Flap cunt EMU Cok nu zal ik weer in de volgende aflevering mijn versie geven. Dok hier weert

azen GOTO's, dus geen regelnummers gebruiken (moet mogelijk zijn),

Tip: als bij het gebruik van de XIF THEN ELSE struktuur het een en ander zo lastig uitkomt, dat men denkt GOTO's nodig te hebben, BV. de WEE-tak in het PSD beslaat meer dan f programmaregel (zie bv, 'ZET VAN SPELER’), lanze 'ELSE' ‚dit is de NEE-tak wan XIF THEN ELSE, mag maar op ee regel staan (P-CHARM)),is het mischien mogelijk, door de gein teerde conditie te gebruiken, dit probleem op te lossen, (NI, alles wat tussen de XIF en de ELSE staat, behoort bij de THEN-tak ‘conditie is TRUE), dus de WAAR-tak (THEN) mag over meerder programma regals staan, },

Wat wordt met ‘geïinverteerde conditie! bedoeld:

Bv,

XIF Az@ THEN PRINT "A=0" ELSE PRINT ’A is ongelijk aan

is het zelfde als de geïnverteerde conditie:

XIF AC>@ THEN PRINT "A is anaelijk aan 4” ELSE PRINT "Az8"

Hieronder voladt een lijst met alle condities samen met de ginverteerde conditie

X z Y geïnverteerde conditie (NDT) = XY ty 1 1e 1e Ye Oy Xh Y al ne n Xe Y ze Ov DE en Ysa Y Xe Y ' 1 En, U Le Y 3 : XY

FAG.16 ATOM NIEUWS PROGRAMMEREN DEEL 3 _MARTIE KRUKKELAND

conditie: betekend:

'n’ is gelijk aan

"<> is ongelijk aan

is kleiner dan

> is groter dan

'4n' is kleines dan of gelijk aan je is groter dan of gelijk aan

Dit voorgaande is in de Wiskunde bekend onder de verzamel ingen-leer,

P8, het kan ook handig zijn om acher de THEN alleen REM te zetten {als er bv, achter de THEN direct weer een XIF THEN volgd) en dan op de volgende regel met het statement te beginnen wat anders achter de THEN zou komen te staan (door tevens in te springen komt de struktuur duidelijkeer uit),

Martie Krukkeland Twello

DIVERSEN _JOOP ENGELS ATOM NIEUWS PAG,17

“Ave Maria” is de begeleidingspertij (oorspronkelijk voor harp geschreven!) bij de door Bounod gecomponeerde melodie voor het "Wees gegroet” in het Latijn. Je zou het dus min of meer kunnen beschouwen als “music minus one”, want de melodie moet je er zelf hij zingen, spelen, trommelen of wat dan cok.

Voor de omtovering van de Atom in een harp C...) is de Josbox alias AXR1 vereist.

Het programma “Backup” is een verbeterde versie van een der vele binnen onze club circulerende programma's met behulp waarven de Files op een diskette op cassstte kunnen worden apgeslagen. Deze (vrij eenvoudige) versie kopieert de hele disk naar cassette. Alle programma’s worden vanaf #2300 in de Atom geladen en vervolgens met een snelle 1200 Baud-routine geSAVEd, De aorspronkelijke adressen van de files hlijven echter behouden!

Het programma geeft van tevoren de geschatte opnameduur aan Lnooit langer dan 30 minuten), en controleert of alle files wel in het gsheugen van de Atom passen. Bovendien wordt eerst sen index van de Files op cassette gezet, waarna het programma de Files in dezelfde volgorde copieert als waarin ze op de schijf staan.

Tenslotte: voor het programma is P-Charme benodigd. Het zal zichzelf naar #8200 copieren, om zoveel mogelijk ruimte voor de files vrij te laten. Nog een waarschuwing: tijdens de backup-procedure mag de schijf niet uit de drive gehaald of verwisseld worden, anders gebeuren er rare dingen...

Ket programma ”Acorn” tekent razendsnel de gelijknamige boomvrucht op beeldscherm, Hiertoe heeft U, naast P-Charme en de mini-assembler, de 24/40 VDU-routine van Paul Kuyper nodig. De routine werd door Eric Willems en ondergetekende ontworpen als beginplaatje in een bootstrap-programma. Maar U mag er natuurlijk mee doen wat U wilt. Voor de cest kan ik

alleen maar zeggen: wait Cnou ja...) and see!

Voor vragen, op- of aanmerkingen kunt U, zoals altijd, terecht bij: Joop Engels, Prof „Bromstraat 102-11, E525 BH Nijmegen.

PAG.

18 ATOM NIEUWS DIVERSEN JOOP ENGELS

10 20 30 40 50 50 70 80 30 100 110 120 130 240 150 150 170 180

130 F.

200 210 220

230 F.

240 250 260 270 280 230 300 310

320 F.

330 340 350 360 370 380 330

REN AVE MARIA FOR I=5 TO 6;G0S.a F‚X=5TO6;PL.CH.,D4.,A'H.,D'U, ‚F4, ,A? *, F.X=STO6;PL.B4. ‚DA, 64. ,D' 4. Fru. BUD GOS.a;NEXT 1 F.X=STDB;PL.C4. EHA’ ,E'H. Ard, ru F‚X=5TO6; PL .C4. ‚DA. ,FN4. A HD". Fed F.X=SIO6; PL .B4. ‚0D, ,64.D'4. 04.04. F‚X=5TO6;PL.B4. ‚Ct. ES, ,Gt.,C'4, ESD F.X=STOB; PL .At.;C4.JE4. Gt. /C u Ey; os F‚X=STO6;PL.D4.,A'4.,D° F.X=5IO6; PL .G4. | F‚X=STO6;PL.G4., F.X=5TO6;PL.F4., :

F‚X=STOG; PL.F4, F.X=STO6;PL.E4, F.X=STOG;PL.E'4,,F’4 F‚X=STOB;PL.D'4, :F X=5TO6; PL.GH, ‚D GOS .a F.X=STO6;PL.CH,,G4.,A' #4, F‚X=5TO6;PL.F4,,F' t. nij,

‚CU, ,E'H.‚N. ze, „EH iN, CPE DEN.

X=STOE; PL .D#4.,C? ú: à De: 4. Ante. „DEN. mj, HK

‚Art.,Cr4, F‚X=STOG;PL.GH, ‚D’ #.,G'u,,A” a, F.X=5TOG; PL. Bet. ‚Ft, ‚B "4 CPH, F.X=5TO6; PL, 68, ,F F .X=5TO6; PL 64. ‚E’ F‚X=STO6;PL.G4.,0' F‚X=STO6;PL.G4.,D" F‚X=STOB;PL.GH.,0' ‚E ‚D' ‚0 ES

D"ú, iN.

4, beu, iN.

8, PN.

8, BN.

4, 4, iN.

# „Frit. iN. F.X=STO6;PL.GH, 4. 54, ;N. X=STOB;PL.GH. H, Kd F‚X=STO6; PL.G4, kid F‚X=STOB; PL.C4. y PL.C4,,C’4.,F'4, APH. Cr, ,F”4,

PL. cru’, ‚Art, ‚cra, Da re ú Art. ,F’U,‚D'4, PL.B4, ‚B 4, ‚6 ij, ‚B s „bee. rEng. ‚by, ‚By PL, Dey’ EM ‚B’'4,,B* ú ‚D'4.,F” GE 4D u, PL.E'1,,E'1.,E' 1.;END

IN. iN.

4, $. iN.

EF: m

4OOaF . X=STO;PL.C4. „EU. BH. C'U.E'U. GE C'E. LE HLN GR.

10 2o 30 40 50 50 70 80 30 100 110

PROGRAM BACKUP REM VERSIE 2.4 REM HELE DISK QP CASSETTE

\#AOB-#FESHFES2, P.$6$12 IF ?18<>#82 THEN 1COPY?1B*256, TOP, #B200; P18=#82; LINKKAFAF DIN CC200),LL20

FOR 1=0 TO 20; LLI=#FFFN, GOSUB p; ASSEMBLEER( CC)

DIVERSEN _JOOP ENGELS ATOM NIEUWS PAG.15

120 TTT 130 DO

140 TMENU

150 DISKCOPY

150 UNTIL FALSE

170

180 END

130

2OOpREN DEFINIEER PROCEDURES

210

220 PROC TMENU

220 X=#B0; D=#100; T=#140; 7X=TXDO; XP1=T/D 240 S=5; A=#2300; M=A

250 DD M=M+D; ?M= PM: HEF ;N=PN; PM=PM: HEF ; UNTIL N=PM OR M=#8000 250 @=0;P.S12;CLEARO

27o Pp.” BACKUP-PROGRAMMA” *

220 P‚” DISK NAAR CASSETIE"''

250 P.S9”KOPIEERT HELE DISK NAAR TAPE,” 300 P.SS9”ALLE FILES WORDEN VANAF #”,8A,' 210 P.S9”GELADEN EN MET 1200 BAUD”*

320 P,S9”GESAVED. PLAATS DISKETTE IN”' 330 P.S9"DRIVE O EN DRUK OP EEN TOEIS.”'" 340 MOVEO, HO; DRAWS2 , HO; DRAWG2, 22; DRAWO, 2; DRAWO, #0 350 INKEY XK

350 LINK #EOOO; *NOMDN

370 COS1;LINK C;*DIR

380 E=8;U=0;U=T#2105

380 F=U+#2000; G=U+#2100

400 FOR N=0 TO CU-8) STEP 8

H10 Wel CHELOCHNIEHFFFF ; Velt

420 IF W>M-A THEN P.”GEHEUGEN TE KLEIN! ”’,$7;END #30 NEXT N

440 P‚,” PROGRAMMADUUR:

450 P=%(U/HOS6+U/B*CS+2I/50+1D

450 @=2;P.P,” MINUTEN"

470 P‚” TOTALE GEHEUGEN: "0/1024” KB” 480 P,” AANTAL PROGRAMMA'S: "0/8!

490 P.” START RECORDER”'”"DRUK OP EEN TOEIS”' 500 INKEY K

510 P.S12” INDEX: ”’; T#E1=0 520 FOR N=F TO #2008 STEP -8

530 P,”

540 FOR 1=0 TQ 6;P.SCNPIJGN.

550 P.”

5560 NEXT N

570 SI="INDEX";B=#B000; E=#8200; L=B; FSAVE 580 PEND

520

BOOPROC DISKCOPY

G10P,512515; PHEL=O

620D0 ADRES

B3OP, *

BHOFOR N=O TO 6;P.SCFPND;N.

5508=5;P.," "&B,&E,&L

BEOFLAAD

570PAUSE 5*50

5BOP,”c”’

BSOFSAVE

70or=F-8; G=G-B

71CUNTIL F<#2008

ZOOP," "KLAAR" *

FAG.40 ATOM NIEUWS DIVERSEN JOOP ENGELS

730P."STQP RECORDER” 74000 BEEP20,30;KEY K;UNTIL K 750PEND 7560 770PRDC FLAAG 7601=7;SD="SET";DPI=CFPIDANIF 7SODPS=tD; LINK HFFF7 BOODO IeI-1 B1OUNTIL FPI<>CH" OR 1<O B2OIF I<O THEN P."FDUTIEVE FILENAAM! ”* ‚57; END BAOFOR N=O TO 1; TPNeFPN;N, BYOTPN=#D; X! Zea; XPU=4FF BSOLINK #FFEO BEOPEND 870 BBOPROC FSAVE BSOX! 2=B; Xt el ; X! 5e SOOX}B=E-B+A;LINK #FFDD S1OPEND geo S20PROC ADRES S408=! GEHFFFF 950E=! CG+4)EAFFFF+B S6OL=! CG+2I80FFFF S7OPEND 380 SS0PROC ASSENBLEERCZ) 100OLL1=#CA; LL2=#20E ; LL 3=#BO0E 1O10LL4=#PBSF ; LLS=-#FAGG 1020LLE=#FB83; LL79FFD1 1030P,$21;FOR I=1 TO 2;P=2;C 1040: LLOPHP; SEI 1OSOLDAELLS<256; STALL2 1O6OLDA@&LL9/256; STALL2+1 1070PLP; RIS 1080: LLBSTXLL3; LOXEN IC; JHPLLG 1030: LLSPKP; SEI ; JSRLL4; PMP t1OOLDXENO7 ; JSRLLB 1110PLP;BNELL1O; JMPLLS 1120: LL10LDXER0H 1130; LL11LDACE, X; STANDE, X; DEX; BNELL11 ; STX#DO; STX4D1 1140LDANDS ; BNELL 12; DEC#D6G 1150:LL120ECRDS; CLC 1160: LL13ROR#De; SEC; LOXENFF ; LDAADS ; SBCHD3; STANCF ; LOAHDE ; SBCHDS 1170PHP ; RORND2; PLP ; BCCLL14 1180CLC; BEOLL14; STX#CF ; SEC 1130: LL14ROR#DE; JSRLL1S; INCHDO; INCHDH; INCHCC 120OROL#DE; BCSLL13; PLP; RIS 1210: LL1SLDX&#07 ; JSRLLB; STXDC ; LDYERO4 1220: LL1SLDA@#2A; JSRLL7 ; DEY ; BNELL16 1230: LL17LDACHCI), Y; ISRLL7; INY; CMPR#OD; BNELL17 ; LDYE#08 1240: LL28LDALL1, Y; JSRLL7 ; DEY ; BNELL18; LDX@#10 12SOJSRLLE; BIT#D2 ; BUCLL2O; DEY 1260: LL1SINY;LDACHD3), Y; JSRLL7 ; CPY#CF ; BNELL1S 1270: LL2OLDA#GC ; JSRLL7 ; LOXENOH; STXLLI; RTS 1280I;NEXT I;P.S6 1230PEND 1 30ORETURN

DIVERSEN __ JOOP ENGELS ATOM NIEUWS PAG. ét

10 PROGRAM ACORN 510 DATA #52585656

20 520 DATA #HASCHESA

30 GOSUB p;REM definieer procedures 630 DATA #4250465E

40 S=#7000;REM haginadres UOU2440 540 DATA #HISEEIEGE

50 T=#5000;REN beginadres tabel 550 DATA #2E6A8850

60 650 DATA #256EB8S6

70 MAAK-TABELCT, AJ 570 DATA #1A74885C

80 PRINT S21;ASSEMBLEER(S,T, AD 580 DATA #0E7ABEB2

30 ASSENBLEER(S,T,A);PRINTI 506 630 DATA #O67EBB55

100 700 DATA #15672185C

110 LINK EIKEL 710 DATA #14801478

120 PRINT $19 720 DATA #14BC1485

130 END 730 DATA #10981232

140 740 DATA #FF

15OpREN PROCEDURES 750 DATA 0

160 750

170 PROC MAAK-TABELCT:D),P 770 PEND

189 780

190 P=T 790 PROC ASSEMBLEERCS,T,A) eoo BO B00C

210 READ OD 810 .TA #9800

220 [P=O,P=P+4 B20 .BA A

230 UNIIL D=O B30

240 840: TABEL - T

eso Da 850: TEKENBYTE = #AA eso P=P-1 860: LOW’ BEGIN - #70 270 UNTIL PP=#FF 870: HIGH’ BEGIN = #71 280 O=P+1 B80: LOW’ CL - #72 230 830: YSAU = #73 300 DATA #0A7CO000 300: XSAU =_ #78 310 DATA #1E721675 310: CURSOR 'H = #DF 320 DATA #CASC2GEE 320: BUFFER = #140 430 DATA #3E582EGA 830: CURSOR’ INVERT = S+#431 340 DATA #3A543566 SHO: VDU' START = S+#6FE 350 DATA #3EGC3EGE2 350: REGEL = #9500 350 DATA #4ESE4260 S60:PR' TEXT = #F7D1 370 DATA #4ASCHSSE 370: WAIT = #FEGG 380 DATA #4ASCHASC 380: SCAN - #FE71 390 DATA #HESAHESA A80

400 DATA #52585258 1000: EIKEL

410 DATA #565652S8 1010 JSR VOU'START

H2O DATA #SESGSES6 1020 JSR TEXT

430 DATA #5AS4SAS4 1030 JSR TEKEN

40 DATA #SES2SASH 1040 JSR COPIEER

450 DATA #SESR2SESe2 1050 JMP BUFFER

350 DATA #6250SES2 1050

470 DATA #625052S0 1070: TEXT

8BO DATA #664E5250 1080 JSR PR'TEXT

430 DATA #EEHESSHE 1090 DB. #O60F

500 DATA #EBHEGE4E 1100 BY #14

S10 DATA #6G4ESSHE 1110 NOP

520 DATA #SGHEGSHE 1120 JSR CURSOR' INVERT

530 DATA #664EGS4E 1130 LDA GREGEL/256

540 DATA #5A4COOOO 1140 STA CURSOR'H

550 DATA #5A4CBA4C 1150 JSR PR'TEXT

550 DATA #6E4EGSSE 1150 AS "Acorn Computers 570 DATA #6250654E 1170 NOP Press a key to start * 580 DATA #62505250 1180 JMP CURSOR’ INVERT

530 DATA #S5SESC5ESe 1150

500 DATA #S55B55BSAS54 1200: TEKEN

PAG. 22 ATOM NIEUWS

DIVERSEN JOOP ENGELS

1210 LDA @#80

1220 STA HIGK’BEGIN 1230 ASL A

1840 STA LOW'BEGIN 1250 STA LOW'CL

1250 LDX @#01

1270

1280: BEGIN

1230 CLC

1300 LDA TABEL, X 1310 PKP

1320 INX

1330 INX

1340 LDA LOW’CL

1350 PLP

1350 BMI VERHOOG'NIET 1270 ADC @#40

1380 STa LOW'CL

1390

1400: VERHOOG "NIET 1410 STA LOW'BEGIN 1420 BCC ZELFDE 'REGEL 1430 INC KIGH'BEGIN 1440

1450: ZELFDE REGEL 1460 LDA TABEL-1,X 1470 BEG BEGIN

1480 CMP GHFF

1330 BNE NOG’NIET KLAAR 1500 RIS

1510

1520: NOG’NIET’ KLAAR 1530 JSR DEEL

1540 JSR VODRAAN

1550 STA CLOW'BEGIND,Y 1550 TYA

1570 ELC

1580 ADC LOW’BEGIN 1530 STA LOW’BEGIN 1500 STY YSAu

1610 LDA TABEL, X

1620 AND &4#7F

1530 ADC TABEL-1,X 1580 JSR DEEL

1550 SEC

1550 SBC YSAU

1570 TAY

1580 JSR NADERHAND 1590 STA CLOW'BEGIND, Y 1700 LDA @TEKENBYTE

1710 1720: VUL’ OP

1730 DEY 2410 RTS 1740 BEQ BEGIN 24201

1750 STA CLOW'BEGIND, Y 2430 PEND 1750 BPL VUL 'DP 2440

1770 2450 RETURN 1780: DEEL

1730 SIX XSAU

1800 TAY

1810 AND @#07 1820 TAX

1830 TYA

1840 LSR A

1850 LSR A

1850 LSR A

1870 TAY

1880 RTS

1830

1300: VOORAAN

1310 LDA G#FF 1820

1330: LOOP1

1840 DEX

1950 BMI KLAAR 1950 LSR A

1970 BPL LOOP1 19850

1980: NADERHAND 2000 LDA @#00 2010

2oe0:LooPe

2030 DEX

2040 BMI KLAAR 2050 SEC

2050 ROR A

2070 BCC LOOP? 2080

2080: KLAAR

2100 AND @TEKENBYTE 2110 LDX XSau 2120 RIS

2130

2140: COPIEER

2150 LDX BTERUG-ROTEER 2160: VERPLAATS 2170 LDA ROTEER,X 2180 STA BUFFER, X €190 DEX

2200 BPL VERPLAATS 2210 RIS

22eo

2230: ROTEER

2240 LDA REGEL 2250 ASL a

22560 LDX @#iF 2270: LUS

2280 ROL REGEL, X 2290 DEX

2300 BPL LUS 2310 LDA BUFFER+1 23e CLC

23230 ADC e@e#20 2340 STA BUFFER+1 2350 STA BUFFER+CLUS-ROTEER) +1 2360 BCC ROTEER 2470 JSR WAIT 2280 JSR SCAN 2390 BCS ROTEER 2400: TERUG

DIVERSEN JOOP ENGELS ATOM NIEUWS PAG.23

10

20

30

40

50

50

70

BO

30 100 110 120 130 140 150 160 170 180 150 200 210 220 230 240 eso 250 270 280 230 300 310 320 330 340 350 460 370 380 380 200 410 420 430 440 450 450 470 #80 430 500 510 520 530 540 550 550 570 580 530

REM 24/40-UDU 0.3

Q%=&1700:REM karakter-tabel

0x=0%+8300: REM begin code

DIM C4C9),RAC12)

Sx=&4O: REN scherm

C=&3F8: REM werkruimte

FaC+1:H=C+e: U=C+3: DCH

E=C+5;BeC+56: G=C+7

p=&DE: q=8DF : r=&EO: n=&EC

xsav=BE4: ysav=8ES: pm=&E6

lock=&E